2015-02-06 56 views
0

我有以下型号:ActiveRecord的查询多个连接

class Epic < ActiveRecord::Base 
    has_many :planograms 
    has_and_belongs_to_many :users 
end 

class Planogram < ActiveRecord::Base 
    belongs_to :epic 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :epics 
end 

还有一个epics_users表。 我找不出如何编写ActiveRecord查询来获取特定用户的所有Planograms。我试过以下内容:

Planogram.joins(:epic).where(:epics_users => {:user_id => 1}) 

和许多其他组合,但我没有在ActiveRecord查询经验。

回答

2

您可以与用户和货架图是这样的:

class User < ActiveRecord::Base 
    has_and_belongs_to_many :epics 
    has_many :planograms, :through => :epics 
end 

,并得到一个特定用户的货架图:

user.planograms 
0

我会简单地使用Arel。通过执行以下操作首先获得您的模型的AREL表:

planograms = Planogram.arel_table 
epics = Epic.arel_table 

然后创建查询,如下所示:

Planogram.joins(:epic).where(epics[:user_id].eq(USER_ID))