迁移后更新数据的最佳方法是什么?

时间:2014-06-19 21:01:46

标签: ruby-on-rails

在Rails / Activerecord中,我更改了一个字段以使其成为必需字段;我想跑

AppVersion.where('content_rating IS NULL')。每个{| av | av.update_column('content_rating',7)}

确保content_rating不为null。

从我读到的内容来看,迁移不是实际更改记录的好地方。是否有“一次这样做”的方式在Rails结构中运行代码?

1 个答案:

答案 0 :(得分:1)

是的,您可以创建一个rake任务:

http://railsguides.net/2012/03/14/how-to-generate-rake-task/

$ rails g task update_version update_rating_column
$ create lib/tasks/update_version.rake

namespace :update_version do
  desc "Update content_rating"
  task :update_rating_column => :environment do
    AppVersion.where('content_rating IS NULL').each {|av| av.update_column('content_rating', 7) }
  end
end

如果需要,您可以在迁移中运行任务:

Execute a Rake task from within migration?