Daten migrieren - nicht nur Schema, Rails

Manchmal,Daten Migrationen sind erforderlich. Im Laufe der Zeit sind Codeänderungen und Migrationen mit Ihrem Domain-Modell nicht mehr gültig und Migrationen schlagen fehl. Was sind die Best Practices für die Migration von Daten?

Ich habe versucht, ein Beispiel zu machen, um das Problem zu klären:

Bedenken Sie. Sie haben eine Migration

class ChangeFromPartnerAppliedToAppliedAt < ActiveRecord::Migration
  def up
    User.all.each do |user|
      user.applied_at = user.partner_application_at
      user.save
   end
 end

das läuft natürlich einwandfrei. Später benötigen Sie eine Schemaänderung

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

Für Sie kein Problem. Es läuft perfekt. Aber wenn Ihr Mitarbeiter diese beiden heute zieht,noch nicht die erste Migration ausgeführt, er bekommt diesen Fehler beim Ausführen der ersten Migration:

rake aborted!
An error has occurred, this and all later migrations canceled:
undefined method `acceptance_confirmed_at=' for #<User:0x007f85902346d8>

Das ist kein Teamplayer, er wird den Fehler beheben, den Sie eingeführt haben. Was hättest du tun sollen

Antworten auf die Frage(3)

Ihre Antwort auf die Frage