31
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails・seedファイルを分割して管理する

Posted at

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'

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

31
38
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?