Rails 3.0.3を使用しており、データベースに既に「categories」テーブルのデータがありますが、そこからシードファイルを作成したいと考えています。このテーブルから私のためのseeds.rb形式?
seed_dump
と呼ばれるgemがあります。これはまさにあなたが望むことをします:
既存のレーキタスクについてはわかりませんが、Railsコンソールでこのようなものを実行して、結果をseeds.rbファイルに貼り付けてください。
(警告:ダーティ&テストなし)
c = Category.all
c.each do |cat|
puts "Category.create(:name => '#{cat.name}')"
end
追加フィールドがある場合は調整します。
お役に立てれば。
YamlDbを使用して、開発データベースからデータをダンプし、それを別のサーバーにロードしました。データをYamlファイルにダンプします。このファイルは、db:loadを使用して他のdbサーバーにプッシュするたびに使用されます。
古い質問です。@ Brianの答えに基づいた新しい質問があります。
行全体をそのまま保持する場合:
seedfile = File.open('db/seeds.rb', 'a')
c = Category.all
c.each do |cat|
seedfile.write "Category.create(#{cat.attributes})\n"
end
seedfile.close
一部の属性のみを書き込みたい場合は、書き込み行を次のように変更します。
seedfile.write "Category.create(#{cat.attributes.slice('attr1', 'attr2', ...})\n"
または、タイムスタンプなど、一部を除くすべての属性が必要な場合:
seedfile.write "Category.create(#{cat.attributes.except('created_at', 'updated_at')})\n"