ActiveRecords 加入 - belongs_to 之间的顺序并且有很多
ActiveRecords joins - order between belongs_to and has many
这似乎是一个简单的问题,但我已经找了一段时间没有找到答案...
我有三个模型:
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)
无效的原因是什么?
你可以在这个页面找到你的答案:
RailsGuides: Active Record Query Interface
Teacher.where(name: "Joe").joins(:classes).joins(:rooms)
为了构建列表如
[
{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 中的保留字)。
这似乎是一个简单的问题,但我已经找了一段时间没有找到答案...
我有三个模型:
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)
无效的原因是什么?
你可以在这个页面找到你的答案:
RailsGuides: Active Record Query Interface
Teacher.where(name: "Joe").joins(:classes).joins(:rooms)
为了构建列表如
[
{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 中的保留字)。