【发布时间】:2015-02-14 16:38:28
【问题描述】:
这似乎是一个简单的问题,但我已经寻找了一段时间并没有找到答案......
我有三个模型:
class Room < ActiveRecord::Base
has_many :classes
end
class Classe < ActiveRecord::Base
belongs_to :teachers
belongs_to :rooms
end
class Teacher < ActiveRecord::Base
has_many :classes
end
根据老师的姓名,我想获取他的所有课程以及与每个课程相关联的房间。我尝试了joins 和includes 的查询组合,但无法正确...
另外,Teacher.joins(:classes) 有效但Classe.joins(:teachers) 无效的原因是什么?
【问题讨论】:
-
我认为你有一个错字:应该是
belongs_to :teacher(单数),而不是teachers。此外,我很惊讶 Rails 正确地将“Classes”单数化为“Classe”。那不应该是“类”吗? -
您希望在哪种情况下获得教师的课程和相关房间,即您希望如何/在哪里使用它们?我问是因为您实际上不必在这里使用
includes- 这只是一个可选的性能优化,joins也不适用。只需Teacher.find(5).classes为您提供老师 5 的所有课程,Teacher.find(5).classes.first.room将为您提供这些课程中的第一堂课。 -
感谢 janfoeh,我已经修正了错别字(我根据我的问题改编了这个例子,以便更容易理解,所以我不太了解单数化 :))
-
我想为与我的老师姓名对应的所有条目返回一个 {teacher_id, classe_id, room_id} 列表。
Teacher.find(5).classes.all.room之类的东西(显然不起作用) -
所以你想制作一个包含这三个值的自定义哈希?
标签: ruby-on-rails join activerecord