我花了整整一天的时间。
我将权限存储在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