我花了整整一天的時間。
我將權限存儲在postgresql數據庫的一個字段中。這裏的價值 「羅斯堡,肯德基,kcpl」 我想拆分,使查詢 SELECT * FROM發動機中plant_id在( '羅斯堡', '肯德基', 'kcpl')Rails 3.1 where子句將引號添加到sql IN子句中
def fnc_user_permissions <br/>
temp_var = current_user.permissions.split(",")
sql_perms = String.new
# "perm1", "perm2", "perm3"
temp_var.each do |pm|
sql_perms += (sql_perms.blank? ? pm : "', '" + pm)
end
@engines = Engine.where("plant_id in (:plant_id)", {:plant_id => sql_perms })
@engines = @engines.order("name")
end
「 Engine.where補充說:」第二,‘單引號’,所以,而不是領
select * from engines where plant_id in ('roseburg', 'kfc', 'kcpl')
我得到
select * from engines where plant_id in ('roseburg'', ''kfc'', ''kcpl')
如果我編輯的每個循環這個
sql_perms += (sql_perms.blank? ? pm : ", " + pm)
我得到
select * from engines where plant_id in ('roseburg, kfc, kcpl')
最後我不得不這樣做:
temp_var = current_user.permissions.split(",")
sql_perms = String.new
# "perm1", "perm2", "perm3"
temp_var.each do |pm|
sql_perms += (sql_perms.blank? ? pm : "', '" + pm)
@engines = Engine.find_by_sql("select * from engines where plant_id in ('#{sql_perms}') ")
它的工作原理,但我寧願使用。凡代碼 如何使。哪裏停止任何想法添加我不想要的第二個引號?它是如此微軟!
Teedub