ruby-on-rails - remove - rollback migration rails
Crear archivo inicial a partir de datos que ya están en la base de datos (4)
He usado YamlDb para volcar datos desde mi base de datos 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.
Estoy usando Rails 3.0.3 y tengo datos para mi tabla de "categorías" que ya están en la base de datos, pero quiero crear un archivo inicial a partir de él. ¿Hay alguna tarea de rake que genere el formato seeds.rb para mí desde esta tabla?
No estoy seguro acerca de las tareas de rake existentes, pero puede intentar ejecutar algo como esto en la consola de rails y pegar los resultados en su archivo seeds.rb
( advertencia: sucio y no probado)
c = Category.all
c.each do |cat|
puts "Category.create(:name => ''#{cat.name}'')"
end
Ajústelo para cualquier campo adicional que pueda tener.
Espero que esto ayude.
Pregunta anterior, tengo una nueva basada en la respuesta de @ Brian.
Si quieres mantener toda la fila como 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 solo desea escribir algunos atributos, cambie la línea de escritura a la siguiente:
seedfile.write "Category.create(#{cat.attributes.slice(''attr1'', ''attr2'', ...})/n"
O bien, si desea todos los atributos excepto algunos, por ejemplo, marcas de tiempo:
seedfile.write "Category.create(#{cat.attributes.except(''created_at'', ''updated_at'')})/n"
Hay una gema llamada seed_dump
, que hará exactamente lo que quieras: