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