Un ancien de mon rubis sur les migrations des rails contient à la fois la migration proprement dite, mais aussi une action pour modifier les données:Comment gérer à défaut des migrations sur une réinitialisation en raison des modèles/méthodes supprimés
class AddTypeFlagToGroup < ActiveRecord::Migration
def self.up
add_column :groups, :selection_type, :string
Group.reset_column_information
Group.transaction do
Group.all.each do |group|
group.selection_type = group.calculate_selection_type
group.save
end
end
end
def self.down
remove_column :groups, :selection_type
end
end
Dans cette migration, il y a les instructions de migration habituelles add_column
et remove_column
. Mais il existe également des appels de méthode spécifiques au modèle. J'ai écrit ceci il y a quelques semaines. Depuis lors, j'ai enlevé mon modèle Group
, ce qui donne une erreur quand je fais une migration complète avec :reset
.
rake db:migrate:reset
(in /Users/jesper/src/pet_project)
[...]
== AddTypeFlagToGroup: migrating =============================================
-- add_column(:groups, :selection_type, :string)
-> 0.0012s
rake aborted!
An error has occurred, this and all later migrations canceled:
uninitialized constant AddTypeFlagToGroup::Group
La chose est que dans la version actuelle de mon code, le groupe n'existe pas. Comment dois-je gérer ce "chemin de fer" ??
Je pense que je pourrais modifier la migration en commentant les choses Group.xxx
, mais est-ce une sage façon de faire?
+1 pour arrrrgh. –
Modifier la migration ... c'est ce que je pensais devoir faire –