gpt4 book ai didi

ruby-on-rails - 在 Rails 中使用 includes() 和 where() 时出现 ArgumentError(参数数量错误(给定 1,预期 2))

转载 作者:行者123 更新时间:2023-12-04 01:56:57 25 4
gpt4 key购买 nike

我正在尝试调试 Rails 5.1.5Postgres 2.1.3 中的问题。这个查询在我的生产环境中运行良好,但是当我在本地复制数据库并尝试做同样的事情时,我得到这个错误:

Author.includes(:books).where({books: {id: 1}})

ArgumentError (wrong number of arguments (given 1, expected 2))

我尝试过的所有其他查询都有效,而且我检查过的所有数据/版本看起来都一样。如果数据库中根本没有作者,这也会失败。

Author模型中的关系是这样设置的

has_many :books, dependent: :destroy

我试过完全删除数据库,从头开始重新创建它等等。

有没有人知道从哪里开始挖掘?

最佳答案

includes 的 Rails 文档中, 你会在这里看到它是如何工作的

User.includes(:posts).where('posts.name = ?', 'example')

所以,当 rails 对你大喊大叫时

ArgumentError (wrong number of arguments (given 1, expected 2))

它可能期待你给它

Author.includes(:books).where("books.id = ?", 1)

这对我来说意义不大(因为你的语法应该有效),但这是当你得到“它需要 2 个参数”时首先想到的,因为在旧版本的 Rails 中,这就是它的工作原理。

一些其他选项可能包括使用 SpawnMethod#merge (我最喜欢的):

Author.joins(:books).merge(Book.where(id: 1))

本质上是使用 ActiveRelation 执行左连接,将两个查询组合成一个 sql 查询。

关于ruby-on-rails - 在 Rails 中使用 includes() 和 where() 时出现 ArgumentError(参数数量错误(给定 1,预期 2)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49929468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com