这似乎是一个简单的问题,但我已经找了一段时间,却找不到答案......
我有三种模式:
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)
?
答案 0 :(得分:1)
为了构建诸如
之类的列表[
{teacher_id: 5, class_id: 9, room_id: 3},
{teacher_id: 5, class_id: 10, room_id: 2},
...
]
对于一位老师,请尝试
Teacher.find(5).classes.map do |klass|
{
teacher_id: klass.teacher_id,
class_id: klass.id,
room_id: klass.room_id
}
end
(我在这里使用klass
,因为class
是Ruby中的保留字。)
答案 1 :(得分:0)
您可以在此页面找到答案:
RailsGuides: Active Record Query Interface
Teacher.where(name: "Joe").joins(:classes).joins(:rooms)