Skip to content

Instantly share code, notes, and snippets.

@seak0503
Created March 10, 2016 03:50
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save seak0503/5aa5db45abfac5c42a06 to your computer and use it in GitHub Desktop.
Save seak0503/5aa5db45abfac5c42a06 to your computer and use it in GitHub Desktop.
seed_dumpの使い方

本家

https://github.com/rroblak/seed_dump

注意ポイント

デフォルトdb/seeds.rbを上書きしてしまうため、通常はFILEオプションを利用した方がよい。

linux shell上での操作

全テーブルのシードファイルをつくる

$ bin/rake db:seed:dump

railsモードを指定する

$ bin/rake RAILS_ENV=production db:seed:dump

ファイルに書き出す

$ bin/rake db:seed:dump FILE=tmp/hoge.rb

ファイルに追記する

$ bin/rake db:seed:dump FILE=tmp/hoge.rb APPEND=true

ダンプするモデルを指定する

$ bin/rake db:seed:dump MODELS=User

ダンプするレコード数を指定する

$ bin/rake db:seed:dump MODELS=User LIMIT=1

出力したくないモデルを除外する

$ bin/rake db:seed:dump MODELS_EXCLUDE="User"

出力したくないカラムを除外する

$ rake db:seed:dump EXCLUDE=name,age

Rails Consoleでの操作

linux shell上では、モデル操作Model.where(user: "tanaka")みたいな感じで、クエリを操作した ダンプができない。

そのような細かい作業をした上でダンプしたい場合はRails Console上でダンプ出力の操作をする

基本操作

irb(main):001:0> puts SeedDump.dump(User)
User.create!([
  { password: "123456", username: "test_1" },
  { password: "234567", username: "test_2" }
])

ファイルに書き出す

irb(main):002:0> SeedDump.dump(User, file: 'db/seeds.rb')

カラムを除外する

irb(main):004:0> SeedDump.dump(User, exclude: [:name, :age])

ActiveRecordを使ってダンプ出力する

irb(main):001:0> puts SeedDump.dump(User.where(is_admin: false))
User.create!([
  { password: "123456", username: "test_1", is_admin: false },
  { password: "234567", username: "test_2", is_admin: false }
])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment