将字符串数组送入Ruby循环

时间:2013-10-19 15:22:23

标签: ruby arrays loops

我想编写一个快速方法,可以帮助我初始化一个ruby表中的几个字段。这是我到目前为止,但它不起作用。我希望能够将一个字段名称数组输入到这个函数中,这样我就可以在一个循环中完成整个初始化。

fields =["field1","field2","field3","field4"]
tasks = Task.all

tasks.each do |task|
    fields.each do |field|
        if task.field.nil?
            task.update_attribute :field => true
        end
    end
end

3 个答案:

答案 0 :(得分:1)

也许这就是你的意思:

fields = %w[field1 field2 field3 field4]
tasks = Task.all

tasks.each do |task|
  fields.each do |field|
    task.update_attribute :"#{field}" => true if task.send(field).nil?
  end
end

答案 1 :(得分:1)

如果这实际上是Rails,则可以使用散列访问:

task[field] = true if task[field].nil?

您仍然需要save修改后的记录。

您可以使用task.update_attribute(field, true):这将立即更新数据库,但会为每个已修改的属性执行事务。

答案 2 :(得分:1)

尝试始终对数据库使用最少数量的查询

fields = ["field1","field2","field3","field4"]

fields.each do |field|
  Task.where({field => nil}).update_all({field => true})
end