这是一个代码片段
Wip.where(status: "P").where("reason NOT IN ?", ['DOB_MISSING'])
这不起作用。
我尝试寻找它并发现了很多问题。他们中的一些人提出了这个建议,但我不确定我哪里错了
这里我粘贴了我的 Rails c 的一部分
[19] pry(main)> Wip.where(status: "P").where("reason NOT IN ?", ['DOB_MISSING']).count
(0.6ms) SELECT COUNT(*) FROM `wip` WHERE `wip`.`status` = 'P' AND (reason NOT IN 'DOB_MISSING')
ActiveRecord::StatementInvalid: Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''DOB_MISSING')' at line 1: SELECT COUNT(*) FROM `wip` WHERE `wip`.`status` = 'P' AND (reason NOT IN 'DOB_MISSING')
from /home/ritu/.rvm/gems/ruby-2.2.3@svasth/gems/rack-mini-profiler-0.9.7/lib/patches/db/mysql2.rb:20:in `query'
最佳答案
这是一个简单的语法错误问题:
where("reason NOT IN (?)", ['DOB_MISSING'])
所有 IN
子句都需要用方括号括起来。
关于mysql - where not in Rails 3 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36883677/