我创建了一个在 Rails 上构建 SQL 查询的方法,但遇到语法错误,不知道为什么,代码对我来说看起来是正确的。 也许这里有人能够找到问题?这可能是一些非常明显但我没有注意到的事情。
我的代码:
def build_query(info_arr)
<<~SQL
SELECT * FROM word_group_values WHERE account_id = :account_id
AND word_group_id <> :word_group_id
AND ("title", location) IN #{info_arr.join(', ')}
SQL
end
我得到的错误:
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near ")" LINE 2: AND ("title", location) IN () ^ : SELECT * FROM word_group_values WHERE account_id = 110
AND ("title", location) IN ()
您的查询是
SELECT * FROM word_group_values WHERE account_id = 110 AND ("title", location) IN ()
由于
info_arr
为空,您将得到一个空字符串,这是一个无效的查询。
(
syntax error at or near ")
正在抱怨空荡荡的()
)
您需要传递一个元组数组才能使其有效。在这种情况下,普通字符串可能不起作用,除非
info_arr
是那个字符串,但它是空的。