Ren*_*eno 3 ruby activerecord ruby-on-rails
我正在手动构建一个SQL查询,我在params哈希中使用一个数组,用于SQL IN语句,如:("WHERE my_field IN('blue','green','red')").所以我需要获取数组的内容并将它们输出到一个字符串中,其中每个元素都是单引号和逗号分隔(并且没有结尾的逗号).
所以如果数组是: my_array = ['blue','green','red']
我需要一个看起来像这样的字符串: "'blue','green','red'"
我是Ruby/Rails的新手,但想出了一些有用的东西:
if !params[:colors].nil?
@categories_array = params[:colors][:categories]
@categories_string =""
for x in @categories_array
@categories_string += "'" + x + "',"
end
@categories_string.chop! #remove the last comma
end
Run Code Online (Sandbox Code Playgroud)
所以,我很好但很好奇这样做的正确和更简洁的方式是什么样的?
Jac*_*kin 11
使用map和join:
@categories_string = @categories_array.map {|element|
"'#{element}'"
}.join(',')
Run Code Online (Sandbox Code Playgroud)
你打算将这个字符串传递给ActiveRecord find方法吗?
如果是这样,ActiveRecord将自动为您处理:
categories_array = ['foo', 'bar', 'baz']
Model.find(:all, :conditions => ["category in (?)", categories_array])
# => SELECT * FROM models WHERE (category in ('foo', 'bar', 'baz'))
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
此功能内置于ActiveRecord中:
Model.where(:my_field => ['blue','green','red'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6351 次 |
| 最近记录: |