Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
35
Help us understand the problem. What is going on with this article?
@masaki7555

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

More than 3 years have 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'

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

35
Help us understand the problem. What is going on with this article?
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
masaki7555
株式会社リクセル代表取締役 技術的に難しいことは知りません笑 でも知りたいとも思うのです。 WEBで何か、作ってめちゃくちゃ役に立つサービスが作りたい。。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
35
Help us understand the problem. What is going on with this article?