簡體   English   中英

Rails - 准備語句的構建條件數組

[英]Rails - Building Conditions Array for Prepared Statement

我正在嘗試構建一個條件數組以在預准備語句中使用:

Cars.find(:all, :conditions=>["color = ? AND doors = ? AND type = ?", "black", "4", "sedan"])

我已嘗試執行以下操作但收到錯誤“ActiveRecord :: PreparedStatementInvalid(錯誤的綁定變量數量(4 for for 2)”):

conditions = []
conditions += ["color = ?", "black"]
conditions += ["doors = ?", "4"]
conditions += ["type = ?", "sedan"]

Cars.find(:all, :conditions=>conditions)

為准備好的陳述構建條件的正確方法是什么?

問題是你正在構建一個錯誤的查詢,因為你通過語句將params傳遞給了問號。

您生成的查詢看起來像這樣:

 => ["color = ?", "black", "doors = ?", "4", "type = ?", "sedan"] 

為了實現你想要的陣列,你必須做這樣的事情。

conditions = []
conditions += ["color = ?", "black"]
array = ["doors = ?", "4"]
conditions[0].concat(" AND ")
conditions[0].concat(array[0])
conditions << array[1]

如果您重復最后一步,則應獲得所需的結果。

您可能會發現使用哈希更容易:

conditions = {}
conditions[:color] = "black"
conditions[:doors] = 4
conditions[:type] = "sedan"

Cars.find(:all, :conditions=>conditions)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM