gpt4 book ai didi

ruby-on-rails - 使用空数组检索记录时出现问题

转载 作者:行者123 更新时间:2023-11-29 11:07:33 25 4
gpt4 key购买 nike

我有一个包含大约 100 个用户的表,还有一个用户 ID 数组。我想要做的是显示所有不属于此用户 ID 数组的用户。当我做这样的事情时

 User.where('id NOT IN (?)', [9, 2, 3, 4])

它成功返回用户 ID 不属于该数组的记录。但是,如果该数组像这样是空的

 User.where('id NOT IN (?)', [])

它不会返回任何用户,SQL 查询如下所示

 SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))

有谁知道为什么会这样,或者这可能是一个错误?我将 Rails 3.2.5 与 PostgreSQL 结合使用。

最佳答案

在 Rails 4 中,您可以使用 User.where.not(id: []) 来获得正确的结果。它产生:

SELECT "users".* FROM "users" WHERE (1 = 1)

不幸的是 User.where('id NOT IN (?)', []) 应该是等效的,但事实并非如此。它仍然给你错误的结果:

SELECT "users".* FROM "users" WHERE (id NOT IN (NULL))

引用资料:

关于ruby-on-rails - 使用空数组检索记录时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946004/

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