如何在 rails 查询中将数组作为参数传递



我正在尝试执行下面的查询,但出现错误。

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...

参数值不被视为数组。

您有语法错误。我认为您可以使您的代码更易于阅读,这将有助于防止此类错误:

Event.where({ id: [1, 2], event_start_date: Time.now })

在此格式中,您将哈希传递给 where 查询,其中 idevent_start_date 作为哈希键,[1, 2](数组)和Time.now作为值。

这更具可读性且更易于调试。

对于数组参数和范围运算的组合,我会这样做,因为我发现它更具可读性:

Event.where(id: [1, 2]).where("event_start_date > ?", Time.now)

@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)

把 () 放在 ?.

Event.where("id IN(?) AND event_start_date < (?)", [1,2,3], Time.now)

您缺少 标记符号周围的()

相关内容

  • 没有找到相关文章

最新更新