Railsで初期データを入れるのにはseedを使いますが、モデルが多くなってくるとseedの管理もモデル毎にしたいなと思い調べたので、自分がした方法を紹介します。
もっといい方法があれば、教えていただきたいです。

すること

・seedを複数に分割する。
・seedを指定して実行できるようにする。
・seedを一括で実行する。

手順

rakeタスクの作成

lib/tasks/seed.rakeを作成します。
*こちらのサイトを参考にさせていただきました

seed.rake
Dir.glob(File.join(Rails.root, 'db', 'seeds', '*.rb')).each do |file|
  desc "Load the seed data from db/seeds/#{File.basename(file)}."
  task "db:seed:#{File.basename(file).gsub(/\..+$/, '')}" => :environment do
    load(file)
  end
end

seedファイルの作成

db/seedsというディレクトリを作成し、その下に行いたいモデル毎のseedファイルを作成します。
例えばUserに関してはuser.rbなど。
db/seeds/user.rb

user.rb
  User.create(name: "テスト")

これでおっけーです。

実行方法

以下のコマンドを入力してください

bundle exec rake  db:seed:user

これでモデル毎にファイルを実行することができます!

全ファイルを一括で実行

rakeタスクファイルを作成して全ファイルを実行するという手もありですが、
普通にdb/seeds.rbファイルに

seeds.rb
require './db/seeds/実行したいseedファイル名.rb'

なんてことでもいいと思います。
もっといい方法があれば、教えて欲しいです。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.