Question

J'essaie les moteurs Rails en créant un moteur de annonces dans lequel les utilisateurs peuvent afficher / poster / répondre aux annonces.

L’application principale contient du code pour l’authentification de l’utilisateur et des profils, tandis qu’un moteur que j’ai créé a été créé pour traiter la fonctionnalité des annonces classées.

Je souhaite maintenant ajouter des exemples de données à la base de données pour le moteur des annonces classées. J'ai donc créé un fichier rake appelé 'sample_classifieds_data.rake' dans 'vendeur / plugins / classifieds / lib / tasks' et j'ai ajouté les fichiers yml dans 'vendor / plugins / classifieds / lib / tasks / sample_classifieds_data'

Le code du fichier rake et un exemple de fichier yml peuvent être trouvés ici: http: //gist.github .com / 216776

Le problème est que lorsque j'exécute la tâche rake, aucune erreur n'est générée, mais les valeurs ne sont pas renseignées dans la base de données.

Des idées? BTW, c’est l’environnement de développement et la base de données est la base de développement.

J'ai exécuté une tâche de rake similaire pour renseigner des exemples d'utilisateurs dans la base de données qui fonctionnait. l'emplacement de ce fichier rake 'sample_data.rake' était situé dans 'lib / tasks'.

Était-ce utile?

La solution

Votre tâche semble bien. La seule chose qui ferait échouer votre tâche en silence est que le fichier que vous passez à Fixture.new ne pointe pas sur un fichier yml ou csv.

Vérifiez deux fois en modifiant l’instruction put pour imprimer le chemin complet du fichier importé et comparez ce qu’elle affiche avec la structure de votre répertoire.

Par exemple, les choses échoueront en silence si vos fichiers de fixture commencent par une lettre majuscule? Categories.yml au lieu de categories.yml

Autres conseils

Dans Rails Edge, vous pouvez utiliser la fonctionnalité rake db: seed pour ajouter des données à votre base. Voir la validation .

L’utilisation est assez simple.

Créez un fichier db / seeds.rb .
Et mettez le code que vous voulez pour y placer votre base de données.

Par exemple:

Category.create!(:name => 'My Category')
Country.create!(:name => 'Cassoulet Land')

Et lorsque vous souhaitez initialiser votre base de données, vous pouvez créer un dake rb: seed

.

Si, pour une raison quelconque, vous ne souhaitez pas utiliser un bord (ce qui serait compréhensible dans un environnement de production), vous pouvez utiliser le plug-in Seed Fu , ce qui vous convient tout à fait.

La tâche db: seed a été ajoutée dans Rails 2.3.4. Donc, pas besoin de courir bord.

http: //weblog.rubyonrails .org / 2009/9/4 / ruby-on-rails-2-3-4

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