2009-07-27 7 views
1

J'adore faire des portées nommées pour rails. Cependant, j'ai rencontré un peu de cornichon. Ive obtenu assez à l'aise avec les étendues nommées pour les jointures comme si:Se joint à plusieurs tables avec ActiveRecord avec des portées nommées

named_scope :foo, :joins => :bar, :conditions => "bar_attribute = 'something'" 

Maintenant, prétendre que j'ai une table appelée baz qui est contient une clé étrangère de la table de bar. J'ai besoin de quelque chose comme ceci:

named_scope :foo, :joins => (:bar => :baz), :conditions => "bar.id = baz.bar_id AND baz_attribute = 'something_else'" 

Comment est-ce possible?

grâce

Répondre

3

Vous n'êtes pas si loin. Cela devrait fonctionner pour vous:

named_scope: foo, :joins => {:bar => :baz}, :conditions => "bazes.your_attr = 'something_else'" 

Cela suppose que le pluriel de baz est bazes. Vous n'avez pas besoin de spécifier la condition qui joint bar.id à bazes.bar_id, elle sera déduite de: joins.

+0

merci beaucoup pour l'aide. mal tester ceci et vous faire savoir. – user94154

0

Peut-être que vous pouvez le faire en combinaison avec une relation has_many :through => ....

+0

comment ça va? pourriez-vous élaborer un peu? merci pour l'aide – user94154

Questions connexes