问题描述
在 Rails 6(使用 Postgresql)中,当我将 attr: nil
放入 WHERE 子句时,ActiveRecord 会将 1=0
放入 sql,即使数据库中有 {{1} 为 NULL 的记录}
我希望它按照 this answer
将attr
放入 sql
当我使用这样的数组时,它只能按预期工作:"attr" IS NULL
,这是为什么?
这就是我在 Rails 控制台中得到的:
attr: [nil]
这很令人沮丧,因为这意味着当我在 where 子句中使用变量时,如果变量有可能为零,我必须记住将它们放入数组中(我总是希望 nil 与我的 WHERE 子句中的 NULL 匹配,因为数据库中的NULL总是被ActiveRecord返回给我作为nil)
Rails 版本是 6.0.0.beta3 6.1.4
这是我的 gemfile:
irb(main):048:0> puts Output.where(value: nil).to_sql
SELECT "outputs".* FROM "outputs" WHERE 1=0
irb(main):049:0> puts Output.where(value: [nil]).to_sql
SELECT "outputs".* FROM "outputs" WHERE "outputs"."value" IS NULL
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)