2010-02-04 2 views
1

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?

Répondre

1

Il n'y a aucune valeur à laisser les choses de groupe dans votre migration maintenant qu'il est parti de votre projet. Je voudrais simplement modifier la migration, tout supprimer de la base de données et migrer à partir de zéro. Il n'y a même pas de raison de le commenter (vous utilisez le contrôle de version non?)

Aussi, je crois que la "voie des rails" avec les migrations est épelée "Arrrrgh!"

+0

+1 pour arrrrgh. –

+0

Modifier la migration ... c'est ce que je pensais devoir faire –

Questions connexes