場合によっては、データの移行が必要になります。時間が経過すると、ドメイン モデルを使用したコードの変更と移行は無効になり、移行は失敗します。データ移行のベスト プラクティスは何ですか?
問題を明確にするために例を作ってみました:
このことを考慮。移行があります
class ChangeFromPartnerAppliedToAppliedAt < ActiveRecord::Migration
def up
User.all.each do |user|
user.applied_at = user.partner_application_at
user.save
end
end
もちろん、これは完全に正常に動作します。後で、スキーマの変更が必要になります
class AddAcceptanceConfirmedAt < ActiveRecord::Migration
def change
add_column :users, :acceptance_confirmed_at, :datetime
end
end
class User < ActiveRecord::Base
before_save :do_something_with_acceptance_confirmed_at
end
あなたにとっては、問題ありません。それは完全に実行されます。しかし、最初の移行をまだ実行していない同僚が今日これらの両方をプルした場合、最初の移行の実行時に次のエラーが発生します。
rake aborted!
An error has occurred, this and all later migrations canceled:
undefined method `acceptance_confirmed_at=' for #<User:0x007f85902346d8>
それはチーム プレーヤーではありません。彼はあなたが導入したバグを修正します。あなたは何をすべきでしたか?