【问题标题】:Query where object method equals a specific value查询对象方法等于特定值的位置
【发布时间】:2020-04-28 14:13:18
【问题描述】:

我有一个名为 Notes 的表。您可以在便笺上调用名为“book”的方法(book 不是 Notes 表上的列)。

如果我使用Note.first.book.author.id,它会给出作者 ID。但是,当尝试查询 Notes 以查找 author id = '123' 的所有注释时,我尝试

Note.where(book.author.id = '123') 我收到一个错误未定义的局部变量或方法 `book'

我不能用这种方式查询吗?解决此问题的最佳方法是什么?

【问题讨论】:

  • 您正在调用未定义的变量book 并试图将结果传递给where 方法,这就是它导致错误的原因。如果你只运行book.author.id = '123',你会得到同样的错误。

标签: ruby-on-rails ruby oop


【解决方案1】:

假设 Book 模型与 Notebook_id 表内的 book_id 列相关,并且 author_idbooks 表内的列,那么查询应该如下所示:

Note.includes(:book).where(books: { author_id: 123 })

这里是指南https://guides.rubyonrails.org/active_record_querying.html

【讨论】:

    【解决方案2】:

    试试这个方法

    Note.joins(book: :author).where(book: { author: { id: 123 } })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2020-05-29
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多