2010-10-14 13 views
0

Je plonge dans RoR et j'ai besoin de retirer un modèle et sa table, ainsi que de mettre à jour les autres modèles qui le référencent. J'ai fait une recherche sur google et SO et la meilleure réponse que j'ai trouvée était this, mais la réponse n'est pas claire pour moi. Le consensus final était d'utiliser la méthode ruby script/destroy model puis "éditer manuellement toutes les migrations qui pourraient contenir des références à ces modèles supprimés" C'est cette dernière partie que je ne comprends pas. Je veux supprimer les modèles pour mes user et profile modèles et tables ...Comment supprimer un modèle et sa table dans Ruby on Rails?

class CreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table :users do |t| 
     t.string :email 
     t.string :password 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :users 
    end 
end 

class CreateProfiles < ActiveRecord::Migration 
    def self.up 
    create_table :profiles do |t| 
     t.string :name 
     t.integer :user_id 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :profiles 
    end 
end 

et mettre à jour le modèle article et table qui y fait référence ...

class CreateArticles < ActiveRecord::Migration 
    def self.up 
    create_table :articles do |t| 
     t.string :title 
     t.text :body 
     t.datetime :published_at 
     t.string :image 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :articles 
    end 
end 



class AddUserIdToArticles < ActiveRecord::Migration 
    def self.up 
    add_column :articles, :user_id, :integer 
    end 

    def self.down 
    remove_column :articles, :user_id 
    end 
end 

Puis-je faire juste ruby script/destroy user et puis appelez les méthodes self.down dans les migrations article? Si oui, comment appeler les méthodes 'self.down` et dans quel ordre?

Merci beaucoup d'avance pour votre aide!

Répondre

1

Oui. Il suffit de le supprimer avec

ruby script/destroy model user 
ruby script/destroy model profile 

Et puis rollback votre base de données, ou self.down avec ceci:

rake db:rollback 

Maintenant, vous pouvez supprimer en toute sécurité votre fichier de migration.