Bla*_*man 1 ruby ruby-on-rails
我有一个字符串
"1,2,3"
Run Code Online (Sandbox Code Playgroud)
在一个变种中,我正在做:
User.where("id in (?)", user_id_list)
Run Code Online (Sandbox Code Playgroud)
结果sql是:
select users.* from users where (id in ('1,3,4'))
Run Code Online (Sandbox Code Playgroud)
我想要:
select users.* from users where (id in (1,3,4))
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
不user_id_list必须是一个数组?
传入字符串值时,rails会用引号将其包装起来,这就是您查看结果的原因.
当你有一个数组时,你可以这样做:
User.where(:id => user_id_list)
Run Code Online (Sandbox Code Playgroud)
和Rails会自动为您创建IN子句.
由于那些是带有整数的用户ID,我建议你这样做:
User.where(:id => user_id_list.split(',').map(&:to_i))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
670 次 |
| 最近记录: |