使用IN的Rails PostgreSQL语法错误

时间:2016-04-04 19:50:34

标签: postgresql ruby-on-rails-4

我在Rails应用程序中测试以下代码:

a = Ex.all.pluck(:id)
b = Ex.where("name LIKE ?", "%asdf%").where("id IN ?", a).pluck(:id)

它正在生成这个PostgreSQL语句:

SELECT "exs"."id" FROM "exs" WHERE (name LIKE '%asdf%') AND (id IN 9,10,11,12,13,14,15)

但是给出了这个错误:

C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/activerecord-4.2.5/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec':
PG::SyntaxError: ERROR:  syntax error at or near "9" (ActiveRecord::StatementInvalid)
LINE 1: "exs" WHERE (name LIKE '%asdf%') AND (id IN 9,10,11,12...
                                                    ^

出了什么问题?这是我第一次使用这种查询,而且我无法在任何指南或类似问题中找到答案。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

使用Object.keys(data).map((key) => ({ key, value: data[key] })); 时,您需要将选项括在括号中:

IN