2011-06-01 2 views
0

Quand j'utilisais searchlogic, je couuld utiliser les éléments suivants:Comment rechercher dans les associations de Metawhere dans Rails 3?

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 

Par exemple, il me permettra de rechercher de la campagne appartiennent à un contact qui appartenait à l'enregistrement Todo.

C'est ce que j'ai essayé (pas sûr de savoir comment faire le tri:

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) 

Comment puis-je faire quelque chose comme ça avec metawhere

Répondre

0

Si Todo belongs_to ou contactez has_one, que je? « m en supposant est le cas en fonction de la requête Searchlogic ci-dessus, vous voulez faire quelque chose comme (non testé):

@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) 
+0

oui, je pense que c'est la bonne chose, mais pour une raison quelconque, il ne sort pas à droite, mais laissez-moi jouer avec un peu plus, peut-être que je fais quelque chose de mal ... Je pense que j'utilisais des jointures plurielles (: contacts) ... c'est juste singulier, hein? – Angela

Questions connexes