はじめに
railsにはデフォルトでseedが使えますが、初期データを入れる際にはseed-fuを使う方が便利なようです。
sedd-fuでは一部のレコードを更新したり、指定のモデルだけのデータを作成したりできます。
今回は、seed-fuの導入方法と基本的な使い方をご紹介します。
seed fuをインストール
Gemfileに記載して、bundle installします。
gem 'seed-fu'
$ bundle install
ディレクトリ構成
db/fixtures
は最低限必要なディレクトリなのでこちらは作成してください。
db/fixtures
に作成した seedファイルを置くこともできますが、db/fixtures/development
、 db/fixtures/production
のようにseedファイルを作成すると環境ごとに異なるデータを作成することもできます。
また、db/fixtures
以下のseedファイルはアルファベット順に読み込まれます。
以下のようにファイル名に数字を入れると読み込む順番を指定することが可能になります。
db
├ fixtures
├ 01_group.rb
├ 02_user.rb
├ 03_tweet.rb
例として02_user.rb
を記載します。
10.times do |n|
User.seed do |s|
s.name = "name-#{n}"
s.email = "user-#{n}@test.com"
end
end
rails db:seedでseed fuが使えるようになる設定
rails db:seed_fu
で全てのデータを順に作成することができますが、
下記のようにseeds.rbに一文書くことで、通常のseedのようにデータを作成することもできます。
seed-fuを知らない人でもデフォルトのseedと同じようにデータを作成できるので設定しておくと良いと思います。
# rails db:seed で Seed Fu 呼び出せるように設定
SeedFu.seed
ファイルを指定してデータを作成する場合のコマンド
下記のコマンドでモデルを指定してデータを作成可能です。
rake db:seed_fu FILTER=01_group, 02_user # 複数指定する場合はカンマ区切り
終わりに
seed-fuではいろいろと便利な機能があるので、詳細は下記を参考にしてください。
railsで初期データを入れる(seed-fuの使い方)
seedデータってどうやって入れる?seed-fuを使った便利なSeedデータ挿入法