2010-09-20 8 views
2

J'ai récemment construit une application qui a un modèle Books qui est une table de base de données et liée à plusieurs modèles/contrôleurs. J'ai récemment appris que, au lieu de livres, il doit être appelé publications (juste un exemple) ...Un moyen facile de changer un nom pour un modèle?

Je tiens maintenant à mettre à jour la base de données et toutes les mentions tout au long de l'application. Existe-t-il un moyen simple de faire cela dans Rails 3. Ou dois-je migrer cette table particulière (via la version?) Et mettre à jour manuellement toutes les références dans toute l'application?

Merci

+0

Comment pouvez-vous faire cela sans le nom de la table set hack? – AnApprentice

Répondre

1

EDIT

Vous pouvez continuer à utiliser les mêmes modèles et donc garder les références tout au long de l'application. Juste cela, à cause de votre nouveau schéma de base de données, vous devrez définir le nom de table pour le modèle particulier. Vous pouvez aussi utiliser la méthode alias_attribute, pour continuer à faire référence aux anciens noms d'attributs même si vous avez changé les noms des colonnes dans votre table.Pour ex:

class Book < ActiveRecord::Base 
    set_table_name 'publications' 
    set_primary_key 'id' 
    alias_attribute :id,:publication_id 
end 
+0

Merci. c'est une bonne chose à savoir. Etant donné que mon application ne dure que quelques semaines et que je n'ai pas de données réelles, je préférerais ne pas la corriger pour le moment. Donc je suppose que ça va être 100% manuel! – AnApprentice

0

Non, il est impossible de renommer automatiquement un modèle. Ma suggestion serait simplement de supprimer le modèle et de le recréer avec un nouveau nom, car cela est généralement plus facile que de renommer tous les fichiers générés lorsque vous en créez un. Assurez-vous que vos migrations sont correctes, cependant! En ce qui concerne le code, cependant, vous devrez le faire à la dure. Certains éditeurs de texte peuvent effectuer une recherche/un remplacement sur plusieurs fichiers, ce qui pourrait être utile.

Questions connexes