我正在編寫一個複雜的ActiveRecord查詢,它在過濾函數管道中傳遞一個ActivRecord :: Relation。其中一個必須添加一系列「或」鏈接條件。由於ActiveRecord :: Relation沒有提供#or方法,我正在編寫一個SQL字符串以傳入#where。 這個字符串是動態生成的,所以我不能真正使用?爲值。我從以前的問題中知道,使用預準備語句是創建查詢的最佳實踐方法,但我找不到在此處應用它的方法。在使用預處理語句的ActiveRecord中轉義字符串不可能
有沒有逃避字符串或轉換爲使用預處理語句的方法?
編輯:我做這樣的事情(該方法接收的項目作爲一個ActiveRecord :: Relation對象
where_string = '';
filters.each do |field,value|
if(Item.column_names.include? field)
where_string += "OR" if where_string!=''
where_string += " #{field} LIKE '%#{value.to_s}%'"
end
return items.where(where_string)
請提供確切的查詢 – user2801
@ user2801我使用查詢示例編輯了該問題。對不起如果問題之前還不清楚。 – andreimarinescu