ruby 在 rails 上:搜索关联
ruby on rails: search through associations
我的理解有点问题:
我有 Channel
和 Lecturer
,其中 Channel
:has_and_belongs_to_many :lecturers
.
我想获取 Lecturer.id 为 lect.id 的所有频道。
2.3.0 :235 > Channel.where(:lecturers => { :id => 2 })
Channel Load (0.1ms) SELECT "channels".* FROM "channels" WHERE "lecturers"."id" = 2
SQLite3::SQLException: no such column: lecturers.id: SELECT "channels".* FROM "channels" WHERE "lecturers"."id" = 2
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: lecturers.id: SELECT "channels".* FROM "channels" WHERE "lecturers"."id" = 2
这行不通,我觉得我不明白核心概念,因为我可以做到
2.3.0 :231 > Channel.first.lecturer
=> #<Lecturer id: 2, name: "Albert Einstein">
我错过了什么?
您需要连接表来执行此查询。参见 the docs
Channel.joins(:lecturer).where(lecturers: {id: lect.id})
我的理解有点问题:
我有 Channel
和 Lecturer
,其中 Channel
:has_and_belongs_to_many :lecturers
.
我想获取 Lecturer.id 为 lect.id 的所有频道。
2.3.0 :235 > Channel.where(:lecturers => { :id => 2 })
Channel Load (0.1ms) SELECT "channels".* FROM "channels" WHERE "lecturers"."id" = 2
SQLite3::SQLException: no such column: lecturers.id: SELECT "channels".* FROM "channels" WHERE "lecturers"."id" = 2
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: lecturers.id: SELECT "channels".* FROM "channels" WHERE "lecturers"."id" = 2
这行不通,我觉得我不明白核心概念,因为我可以做到
2.3.0 :231 > Channel.first.lecturer
=> #<Lecturer id: 2, name: "Albert Einstein">
我错过了什么?
您需要连接表来执行此查询。参见 the docs
Channel.joins(:lecturer).where(lecturers: {id: lect.id})