3
1

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 3 years have passed since last update.

seed-fuを使ってseedデータを作成する方法

Posted at

はじめに

railsにはデフォルトでseedが使えますが、初期データを入れる際にはseed-fuを使う方が便利なようです。
sedd-fuでは一部のレコードを更新したり、指定のモデルだけのデータを作成したりできます。
今回は、seed-fuの導入方法と基本的な使い方をご紹介します。

seed fuをインストール

Gemfileに記載して、bundle installします。

Gemfile
gem 'seed-fu'
ターミナル
$ bundle install

ディレクトリ構成

db/fixturesは最低限必要なディレクトリなのでこちらは作成してください。
db/fixtures に作成した seedファイルを置くこともできますが、db/fixtures/developmentdb/fixtures/productionのようにseedファイルを作成すると環境ごとに異なるデータを作成することもできます。

また、db/fixtures以下のseedファイルはアルファベット順に読み込まれます。
以下のようにファイル名に数字を入れると読み込む順番を指定することが可能になります。

db
├ fixtures
    ├ 01_group.rb
    ├ 02_user.rb
    ├ 03_tweet.rb

例として02_user.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と同じようにデータを作成できるので設定しておくと良いと思います。

seeds.rb
# 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データ挿入法

3
1
0

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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?