2010-12-08 19 views

Respuesta

55

Hay una gema llamada seed_dump, lo que hará exactamente lo que quiere:

+0

Esa es una muy buena parte, gracias! –

+9

Encontré el nuevo hogar de Github en caso de que alguien lo esté buscando - https://github.com/zenprogrammer/seed_dump – rcd

+0

La página de RubyGems enlaces a https://github.com/rroblak/seed_dump actualmente (8 de febrero de 2014)) EDITAR: Supongo que el enlace zenprogrammer anterior también redirige al nuevo. – streetlogics

27

No está seguro acerca de cualquier rastrillo tareas existentes, pero puede intentar ejecutar algo como esto en la consola de rieles & pegar los resultados en el archivo de seeds.rb

(advertencia: sucia & no probado)

c = Category.all 

c.each do |cat| 
    puts "Category.create(:name => '#{cat.name}')" 
end 

Ajuste para cualquier campo adicional que pueda tener.

Espero que esto ayude.

+1

no puedo imaginar cómo olvidar estos hacks. muchas gracias –

7

He utilizado YamlDb para volcar datos de mi archivo de desarrollo y luego lo cargo en otro servidor. Vacia los datos en un archivo Yaml, que se usará cada vez que quiera usar db: load para subirlo a cualquier otro servidor db.

https://github.com/ludicast/yaml_db

2

vieja pregunta, tengo una nueva basada en la respuesta de @ Brian.

Si desea mantener toda la fila como es:

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 sólo desea escribir algunos atributos, cambiar la línea de escritura a lo siguiente:

seedfile.write "Category.create(#{cat.attributes.slice('attr1', 'attr2', ...})\n" 

O, si desear todos los atributos, excepto algunos, por ejemplo, marcas de tiempo:

seedfile.write "Category.create(#{cat.attributes.except('created_at', 'updated_at')})\n" 
Cuestiones relacionadas