Seed Fu
Seed Fuは、シードデータを扱いやすくするGem
Seed FuのGitHub
使い方
簡単に使い方の説明をしておくと
準備
まず、dbディレクトリにfixtures
ディレクトリを作成し、この下にSeed Fuのファイルを置いていく。
環境ごとに実行するファイルを分けたい場合は、fixtures以下にdevelopment
など環境ごとのディレクトリを作成して、その下にファイルを置く。
db/fixtures
以下または、fixtures/環境を示すディレクトリ
以下にusers.rb
などのシードファイルを作成する。
これで準備はOK
ファイルを作成し、シードの内容を記述する
ユーザーのシードデータを作成する記述は以下の用に書く。
User.seed do |s|
s.id = 1
s.login = "jon"
s.email = "jon@example.com"
s.name = "Jon"
end
Seed Fuを実行する
シードの準備ができたら、ターミナルからコマンドを実行する。
rake db:seed_fu
特定のファイルだけ実行することもできる。
rake db:seed_fu FILTER=users # users.rbだけを実行する
以上で基本的な使い方は終わり(´ω`)
複数のシードを作成する
ここからが本題。
自分の場合は、複数のデータを作りたいことが多いので、このようにしている。
ダミーデータを作成するFaker
と組み合わせるとよりリアルなデータが作成できる。
10.times {
User.seed do |s|
s.name = Faker::Name.name
end
}
中間テーブルのデータをいれる
has_and_belongs_to_many
を使ってアソシエーションを組んだテーブルに値をいれる。
ユーザーとグループの関係を考えたときに、ユーザーは複数のグループに所属でき、グループは複数のユーザーを所持するといった関係を例とする。
自分はこのようにして、中間テーブルにも値を入れることができた。
ユーザーのデータを先に10個ほどシードで作成しているとする。
Group.seed do |s|
s.name = Faker::Name.name
s.users = [User.find(1), User.find(2), User.find(3)]
end
先程紹介したtimes
と組み合わせることで複数作成することが多い。