2011-05-13 80 views
0

是否有可能从下列查询创建named_scope:多在范围/ named_scope连接查询

SELECT g.*, b.* 
FROM users u 
LEFT JOIN band_users bu ON u.id = bu.uid 
LEFT JOIN bands b ON bu.bid = b.id 
LEFT JOIN bands_gigs bg ON b.id = bg.bid 
LEFT JOIN gigs g ON bg.gid = g.id 
WHERE u.id = 1 

我努力做到这一点,是有可能代表多:在named_scope或导轨联接3范围?

感谢

回答

1

是的,这是可以做到的:

class Band < ActiveRecord::Base 
    has_and_belongs_to_many :gigs 

    ... 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :bands 

    scope :my_scope, joins(:bands => :gigs) 
    ... 
end 
+0

感谢mosch,所以控制器看起来像@gigs = User.find(1).my_scope? – pingu 2011-05-13 14:13:59