Question

J'ai 4 migrations associées dans mon application Rails:

Les 3 premières migrations créent chacune une table dans le fichier self.up et les déposent dans leurs méthodes self.down respectives.

La 4ème migration exécute une tâche rake qui charge les données sur les trois (en self.up). Je pense que mettre en place dans cette migration pour supprimer les lignes des 3 tables?

Est-ce que je me trompe? J'aurais probablement dû créer une migration au cours de laquelle je crée 3 tables, puis charge les données dans self.up et supprime simplement les trois tables dans la méthode self.down?

Était-ce utile?

La solution

C'est faux!

Les migrations ne doivent être utilisées que pour migrer vos données Modèle , pas vos Données .

Rails 2.3.4 ajoute des "graines". C’est un fichier dans db / seeds.rb qui contient le code ruby ??permettant d’amorcer votre base de données. C'est un excellent moyen de créer un contenu semi-statique pour votre base de données, par exemple des catégories, des tables de recherche ou des comptes d'utilisateurs.

Vous pouvez ensuite charger les données de départ avec une tâche de ratissage simple

rake db:seed

Autres conseils

Il n’ya pas vraiment de bonne ou de mauvaise façon de faire cela. En fonction de ce que vous avez fait, la 4ème migration devrait simplement décharger les données dans sa méthode down. Chaque descente ne doit annuler que les actions de la montée.

Le chargement de données dans la migration qui crée la table n'est certainement pas requis. Si vous avez 3 tables qui créent des relations has_many ou Apples_to, il serait judicieux de placer les données dans une migration distincte pour pouvoir créer les relations et les utiliser ensuite dans votre chargement de données.

Tout cela mis à part, si vous avez une tâche rake pour charger des données, pourquoi s’embêter avec une migration qui exécute cette tâche rake? Assurez-vous simplement d’exécuter la tâche de rake de votre installation ou utilisez simplement votre tâche de rake pour charger ou décharger des données de démonstration.

En général, je garde mon schéma de migration ciblé et je mettrais tout chargement de données dans une tâche de rake que j'appellerai de manière indépendante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top