Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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'

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

masaki7555
株式会社Caddiee 代表取締役 技術的に難しいことは知りません笑 でも知りたいとも思うのです。 WEBで何か、作ってめちゃくちゃ役に立つサービスが作りたい。。
https://caddiee.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした