Как я могу искать через ассоциации в мета в Rails 3?
Когда я использовал searchlogic, я мог использовать следующее:
27 # @todos = Todo.contact_user_id_is(current_user).
28 # contact_campaign_id_is(@campaign).
29 # current_date_lte(Date.today).
30 # done_date_null.
31 # ascend_by_contact_id.
32 # ascend_by_current_date
Например, это позволило бы мне искать кампанию, принадлежащую контакту, который принадлежал записи Todo.
Это то, что я пробовал (не уверен, как сделать сортировку:
22 @todos = Todo.joins(:contacts).where(:user_id.eq => current_user,
23 :contacts => { :campaign_id.eq => @campaign.id},
24 :current_date.lteq => Date.today,
25 :done_date.not_eq => nil)
Как мне сделать что-то подобное с мета-где?
1 ответ
Решение
Если контакт Todo принадлежит_ или has_one, который, как я предполагаю, основан на приведенном выше запросе Searchlogic, вы захотите сделать что-то вроде (не проверено):
@todos = Todo.joins(:contact).
where(
:contact => {
:user_id => current_user.id,
:campaign_id => @campaign.id
},
:current_date.lteq => Date.today,
:done_date.not_eq => nil
).
order(:contact_id, :current_date)