我想编写一个快速方法,可以帮助我初始化一个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
答案 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