ruby on Rails:通过关联搜索

1 search ruby-on-rails associations where-clause

我有一点理解问题:

我有ChannelLecturer,其中 a 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
Run Code Online (Sandbox Code Playgroud)

这不起作用,我觉得我不理解核心概念,因为我可以做

2.3.0 :231 > Channel.first.lecturer  
=> #<Lecturer id: 2, name: "Albert Einstein">
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

T J*_*T J 5

您需要连接表来执行此查询。请参阅文档

Channel.joins(:lecturer).where(lecturers: {id: lect.id})
Run Code Online (Sandbox Code Playgroud)