2010-12-08 13 views

Répondre

55

Il y a un petit bijou appelé seed_dump, qui fera exactement ce que vous voulez:

J'ai
+0

C'est une très bonne part, merci! –

+9

J'ai trouvé la nouvelle maison Github au cas où quelqu'un le cherche - https://github.com/zenprogrammer/seed_dump – rcd

+0

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

27

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.

+1

ne peut pas imaginer comment puis-je oublier ces hacks. merci beaucoup –

7

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.

https://github.com/ludicast/yaml_db

2

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"