20663


Ruby on Railsで開発しています。  
FactoryGirlを利用してSeed.rbファイルを作成し、テストデータを用意しようと思っています。  
ところで、各テーブルごとに10個以上のデータが必要ですが、どうすればいいですか？

例えば  
spec/factories/users.rb

[code]

    FactoryGirl.define do
      factory :user do
        id { Faker::Number.between(1, 50) }
        name { Faker:Name:name }
        phone_number { Faker::PhoneNumber.phone_number }
      end
    end
    
[/code]

このファイルを使ってSeeds.rbから50個ぐらい作るとしたらどうすればいいですか？


CC BY-SA 3.0
2016-01-06T07:57:20.620
20662
2016-01-06T08:41:51.553
10710
question
ruby-on-rails rubygems
RailsでFactoryGirlを利用してSeed.rbファイル作成


seeds.rbの中で

[code]

    50.times do
      create :user
    end
    
[/code]

のようにすれば50件のuserデータが作成できます。

ちなみに、質問のコードにある id は通常DBが自動的に付与するので指定しなくても構いません。  
むしろ自分でランダムに指定すると偶然idがかぶってしまったときにユニークキー制約エラーになって、データが作成できなくなります。

なので以下のように定義する方がベターです。

[code]

    FactoryGirl.define do
      factory :user do
        name { Faker:Name:name }
        phone_number { Faker::PhoneNumber.phone_number }
      end
    end
    
[/code]

## 追記

> これでできるんでしょうかね..

まずはご自身で試してみてその結果を書いてもらった方が、早く問題を解決できると思います。（そもそも、元々の質問は「50件ぐらいのテストデータを作るためには？」という内容なので、FactoryGirl自体はすでにseeds.rbの中で動いているものだとこちらは認識していました）

実際に試してはいませんが、参考になりそうな情報がありました。

<https://stackoverflow.com/a/7402054/1058763>

上記の回答とコメントの内容を参考にするとこんな感じで使えるようになるみたいです。

[code]

    # Gemfile
    group :development, :test do
      gem 'factory_girl_rails', require: false
    end
    
    # db/seeds.rb
    require 'factory_girl_rails'
    
    50.times do
      FactoryGirl.create :user
    end
    
    # spec/rails_helper.rb
    require 'factory_girl_rails' # <= 追加
    
[/code]

繰り返しになりますが、こちらでは動作確認していないので、まずはKimさんの環境で動かしてみて下さい。


CC BY-SA 3.0
2016-01-06T08:08:07.993
20663
2016-01-06T08:41:51.553
2017-05-23T12:38:56.467
-1
85
20662
answer