我正在尝试执行下面的查询,但是我收到了错误。
Event.where("id IN ? and event_start_date > ?",[1, 2],Time.now)
我收到如下错误:
SELECT "events".* FROM "events" WHERE (id IN 1,2 and event_start_date > '2015-03-11 04:40:43.819487')
PG::SyntaxError: ERROR: syntax error at or near "1"
LINE 1: SELECT "events".* FROM "events" WHERE (id IN 1,2 and event_s...
参数值不被视为数组。
答案 0 :(得分:4)
您遇到语法错误。我认为你可以让你的代码更容易阅读,这有助于防止这种错误:
Event.where({ id: [1, 2], event_start_date: Time.now })
在此格式中,您将哈希传递给where id
和event_start_date
作为哈希键,[1, 2]
(数组)和Time.now
作为值
这更易读,也更容易调试。
答案 1 :(得分:3)
对于数组参数和范围操作的组合,我会这样做,因为我发现它更具可读性:
Event.where(id: [1, 2]).where("event_start_date > ?", Time.now)
答案 2 :(得分:1)
@sank:你的错误给出了答案
您的查询中存在语法错误...
而不是这个
Event.where("id IN ? and event_start_date > ?",[1, 2],Time.now)
试试这个:
Event.where("id IN (?) and event_start_date > (?)",[1, 2],Time.now)
把()放在旁边?。
答案 3 :(得分:0)
Event.where("id IN(?) AND event_start_date < (?)", [1,2,3], Time.now)
您错过了?标记符号周围的()
。