我有一个字符串
"1,2,3"
在一个变量中,我正在做:
User.where("id in (?)", user_id_list)
产生的sql是:
select users.* from users where (id in ('1,3,4'))
我想:
select users.* from users where (id in (1,3,4))
如何解决这个问题?
user_id_list
必须是一个数组吗?
答案 0 :(得分:5)
传入字符串值时,rails会用引号将其换行,这就是你看到结果的原因。
当你有一个数组时,你可以这样做:
User.where(:id => user_id_list)
并且Rails会自动为您创建IN子句。
由于这些是带有整数的用户ID,我建议你这样做:
User.where(:id => user_id_list.split(',').map(&:to_i))