ActiveRecord: поиск по нескольким экземплярам - PullRequest
1 голос
/ 11 марта 2011

Скажите, что у меня в контроллере есть следующее:

@category1
@category2

и я хочу найти все магазины, связанные с этими двумя категориями ...

@stores = @category1.stores + @category2.stores

this работает , но, к сожалению, возвращает неизмененный массив, а не массив AR :: Base, и поэтому я не могу делать такие вещи, как разбиение на страницы, область видимости и т. Д. *

Мне кажется, что есть встроенный способ поиска через ассоциацию нескольких экземпляров ... не так ли?

Ответы [ 2 ]

0 голосов
/ 12 марта 2011

С ActiveRecord каждый раз, когда вы находите набор уникальных объектов модели, лучше всего делать ставку на find для этой модели.

Тогда все, что вам нужно сделать, это ограничить таблицу соединений теми категориями, которые вам нужны.

@stores = Store.all(:joins => :categories,
                    :conditions => ['category_stores.category_id in (?)', [@category1.id, @category2.id]])
0 голосов
/ 11 марта 2011
#@stores = @category1.stores + @category2.stores
#if you want to call API methods you can just add conditions with the category id
@stores = Store.find(:all, :conditions => ['category_id=?', a || b])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...