今天早上我切换到postgresql,现在我选择的地方不再工作了。
我想做的事情非常简单:
shirt_ids = "1,5,6" # String generated by javascript
Shirt.where("id in (?)", shirt_ids)
这给了我:
PG::Error: ERROR: invalid input syntax for integer: "1,5,6"
LINE 1: SELECT "shirts".* FROM "shirts" WHERE (id in ('1,5,6'))
但这有效:
Shirt.where("id in (#{shirt_ids})")
但是每个人都知道不安全。
我正在使用:
pg (0.13.2 x86-mingw32)
rails (3.2.2)
Postgresql数据库是最新版本,今天早上我安装了它。
感谢您的帮助。 ^
答案 0 :(得分:6)
我相信Postgres期待一个数组,而不是IN函数的字符串。如果将字符串转换为数组,它应该可以工作:
shirt_ids = "1,5,6"
Shirt.where('id in (?)', shirt_ids.split(','))
另外,你可以这样做,看起来更清洁:
Shirt.where(:id => shirt_ids.split(','))