2016-09-21 101 views
0

我想查询哪里我得到所有与类D,具有特定名称(类D具有名称列)的关系的类。但也有类B和C之间,实际上我不知道如何处理与连接和合并。通过多重关系查询ActiveRecord

的关系如下:

class Appointment 
has_many :booked_classes 
has_many :classes, through: :booked_classes 
end 

class BookedClass 
belongs_to :Appointment 
belongs_to :Class 
end 

class Class 
belongs_to :Teacher 
has_many: BookedClasses 
end 

class Teacher 
has_many :Appointmentss, through :Clasesses 
has_many :Classes 
end 
+0

用户'包括'方法 –

回答

0

你可以试试这个:

Appointment.joins(classes: [:teacher]).where(teachers: { name: "your_name" }) #"your_name" is the name to be matched with the value in name column of Ds table 
+0

好吧,我真的在activerecord不好:)因此,我得到:'#<#>:0x3ff243b11834>'我不确定如果我使用适当的多元化。我应该使用clases或符号的名称? – user2576342

+0

'A','C'和'D'是模型类名称的占位符。您可以使用'to_sql'方法在您的'rails console'中尝试验证生成的SQL。 – dp7

+0

'SELECT'a's“。* FROM”a's“INNER JOIN”b“ON”b's“。”a_id“=”a's“。”id“INNER JOIN”c“ON”c's“。”id“=” 。“c_id”AND“c's”。“deleted_at”IS NULL INNER JOIN“ds”ON“ds”。“id”=“c's”。“d_id”WHERE“D”。“name”='test'' 但我只是得到这个奇怪的对象,而不是集合作为 – user2576342