2013-05-30 3 views
0

Итак, допустим, у меня есть модели Post, Category и Categorizations.Rails ActiveRecord: поиск по нескольким значениям с несколькими значениями

Должность может иметь много категорий посредством категоризации.

Теперь, как я могу вытащить все сообщения, которые соответствуют хотя бы одному элементу массива категорий?

Пример:

Post 1 has categories 2,5,6 
Post 2 has categories 1,5,9 
Post 3 has categories 2,4,8 
Find posts that match 3,5 

Я хочу сообщений 1 и 2 должны быть возвращены.

Спасибо!

ответ

1

Предполагая, что Categorization является объединением модель Post и Category:

Post.joins(:categorizations).where(:categorizations => {:category_id => [3, 5]}) 

Если это не так, и Categorization фактически has_many :categories тогда:

Post.joins(:categories).where(:categories=> {:id => [3, 5]}) 

Обратите внимание, что второй метод будет работать в первой но также потребует 2 SQL-соединения и, следовательно, может не работать.

Смежные вопросы