gpt4 book ai didi

ruby-on-rails - 空数组在 Rails 中为 NULL

转载 作者:行者123 更新时间:2023-12-04 05:50:52 25 4
gpt4 key购买 nike

我有以下简单的 where find 条件:

Player.where('id NOT IN (?)', @groups.collect {|g| g.player_ids}.flatten)

所以这会找到当前不在任何组中的所有玩家,对吗?好吧,问题是如果任何组中都没有玩家,则不会显示任何内容。原因是生成了以下 SQL:

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

这对我来说似乎是一个奇怪的默认设置,我已经在 Rails 3.0.7 和 3.1.0.rc4 中对其进行了测试,结果相同。现在我可以创造一些条件 if @groups.collect {|g| g.player_ids} 是空的,但有更好的方法吗?

最佳答案

我意识到这是一个老问题,Rails4 现在有 where.not 运算符,但对于那些仍在使用 Rails3 的人,我发现这比公认的答案更容易接受。我不相信它只是 Postgres,但我没有在其他地方测试过。

ids = @groups.collect {|g| g.player_ids}.flatten)
Player.where('id not in (coalesce(?,0))', ids)

关于ruby-on-rails - 空数组在 Rails 中为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6756165/

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