J'utilise Rails 3.0.3 et j'ai déjà des données pour ma table "categories" dans la base de données, mais je veux en créer un fichier de départ. Y at-il une tâche de rake qui va générer le format seeds.rb pour moi de cette table?Créer un fichier de départ à partir de données déjà dans la base de données
Répondre
Il y a un petit bijou appelé seed_dump
, qui fera exactement ce que vous voulez:
ne suis pas sûr des tâches de râteau existantes, mais vous pouvez essayer d'exécuter quelque chose comme ça dans la console de rails & coller les résultats dans votre fichier seeds.rb
(avertissement: sale & non testé)
c = Category.all
c.each do |cat|
puts "Category.create(:name => '#{cat.name}')"
end
Ajustez pour les champs supplémentaires que vous pourriez avoir.
Espérons que cela aide.
ne peut pas imaginer comment puis-je oublier ces hacks. merci beaucoup –
J'ai utilisé YamlDb pour vider les données de ma base de développement et les charger sur un autre serveur. Il déverse les données dans un fichier Yaml, qui sera utilisé chaque fois que vous voulez utiliser db: load pour le pousser vers n'importe quel autre serveur db.
question ancienne, une nouvelle base sur @ la réponse de Brian.
Si vous voulez garder toute la ligne comme il est:
seedfile = File.open('db/seeds.rb', 'a')
c = Category.all
c.each do |cat|
seedfile.write "Category.create(#{cat.attributes})\n"
end
seedfile.close
Si vous voulez écrire que certains attributs, changer la ligne d'écriture à ce qui suit:
seedfile.write "Category.create(#{cat.attributes.slice('attr1', 'attr2', ...})\n"
Ou, si vous souhaite tous les attributs sauf certains, par exemple des horodateurs:
seedfile.write "Category.create(#{cat.attributes.except('created_at', 'updated_at')})\n"
C'est une très bonne part, merci! –
J'ai trouvé la nouvelle maison Github au cas où quelqu'un le cherche - https://github.com/zenprogrammer/seed_dump – rcd
La page RubyGems liens vers https://github.com/rroblak/seed_dump actuellement (8 février 2014). EDIT: Je suppose que le lien zenprogrammer ci-dessus redirige maintenant vers le nouveau. – streetlogics