2013-03-06 46 views
0

我有一些機型類似這樣的corret表中的列:JOIN找不到範圍

class Student < ActiveRecord::Base 
    belongs_to :Teacher 
    scope :rich_students, joins(:teachers).order('students.money DESC') 
end 

然後班主任

class Teacher < ActiveRecord::Base 
    has_many :students 
    belongs_to :Organization 
end 

然後:

class Organization < ActiveRecord::Base 
    has_many :teachers 
end 

現在我寫了這樣一個查詢:

Student.rich_students.joins(:teachers).where("teachers.organization_id = ?", params[:id]).limit(5) 

但這不起作用。它給我的錯誤:

Association named 'teachers' was not found; 

回答

1

不應該的加入是

Student.rich_students.joins(:老師)

+0

所以當我們在連接(Blah)中使用某些東西時,那個「blah」不應該被複數化?對? – Bohn 2013-03-06 21:41:31

+1

這通常是正確的。您可以在滑軌控制檯中使用此功能來正確使用。 – 2013-03-06 21:42:25

1

我覺得有一個錯誤在你的學生「belongs_to的」宣言應該是

class Student < ActiveRecord::Base 
    belongs_to :teacher 
    scope :rich_students, joins(:teachers).order('students.money DESC') 
end 

「:老師」而不是「:教師」

希望它可以是物質的原因..

乾杯