0
今天早上我切換到postgresql,現在我的選擇不再工作了。Postgresql WHERE子句添加''左右?
我所試圖做的是超級簡單:
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數據庫的最新版本,今天早上我安裝了它。
謝謝你的幫助。 ^
謝謝你的快速幫助:) – KimJongIl
也許有點太快...我意識到我的原始答案'有效',但實際上只返回一個對象。相應地編輯,這個應該沒問題。 – MrTheWalrus
更準確地說,ActiveRecord在SQL代碼片段中看到一個'?',並將一個String作爲值,然後將該Ruby字符串轉換爲SQL字符串文字'1,2,3'。我認爲'shirt_ids.split(',')。map(&:to_i)'會更安全。 –