开发者

How do Rails Devs Handle Model/Default Value Issues Post Launch?

开发者 https://www.devze.com 2023-01-25 17:14 出处:网络
I\'m looking for some advise on the following: You ha开发者_如何学运维ve an app live with customers and real data

I'm looking for some advise on the following:

  1. You ha开发者_如何学运维ve an app live with customers and real data
  2. While developing new features, you need to add a column to lets say the projects table
  3. This new column is a UID of some type which is generating by the model using a before_save

This all works fine for new projects moving forward. But all existing projects are nil for that column and everything breaks.

How do you handle his in the Rails world?

Thanks


You could simply create a rake task that pulls in all projects without a UID and and one to each project.

After you run the migration run the task. All of your projects should now have a UID.


I think this should be handled within the migration script, rather than a Rake task.

If I understand correctly, it'll only ever need to be performed once, at the time the column is added to historical records. In my mind, a migration script shouldn't leave the app with a broken data set. Migrations are designed for more than just schema changes.

Here's an example:

def self.up
  change_table :projects do |t|
    t.integer 'new_column'
  end

  Project.reset_column_information

  Project.all.each do |project|
    project.new_column = some_value
    project.save
  end
end

The reset_column_information method makes Rails aware of the new column you just added.

0

精彩评论

暂无评论...
验证码 换一张
取 消