在Rails / Activerecord中,我更改了一个字段以使其成为必需字段;我想跑
AppVersion.where('content_rating IS NULL')。每个{| av | av.update_column('content_rating',7)}
确保content_rating不为null。
从我读到的内容来看,迁移不是实际更改记录的好地方。是否有“一次这样做”的方式在Rails结构中运行代码?
答案 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
如果需要,您可以在迁移中运行任务: