Как правильно рандомизировать данные с помощью seed.rb, используя Factory Girl и random_data? - PullRequest
5 голосов
/ 07 февраля 2012

Я впервые дал генерацию тестовых данных, пытаясь заполнить мою базу данных простым сценарием, который создает достаточное количество записей для моих моделей с учетом всех зависимостей (особенно полиморфизм).

Это мой seeds.rb

require 'factory_girl_rails'

50.times do

  @user = FactoryGirl.create(:user)
  FactoryGirl.create(:contact, :user => @user)

  @question = FactoryGirl.create(:question, :user => @user)

  FactoryGirl.create(:user_answer, :question => @question, :authorable => @user)

  @contact = FactoryGirl.create(:contact, :user => @user)
  FactoryGirl.create(:contact_answer, :question => @question, :authorable => @contact)

end

Например, фабрика question:

FactoryGirl.define do
  factory :question do
    title       "What is the best place to travel in " + Random.country + "?"
    body        Random.paragraphs(2)
    association :user, :method => :build
  end
end

Хотя класс Random производит один случайный термин, этот термин остается одинаковым для всех созданных экземпляров. В этом случае я бы получил 50 вопросов, скажем: «Как лучше всего путешествовать в Испании?» и два идентичных абзаца текста для каждого.

Чего мне не хватает?

1 Ответ

3 голосов
/ 07 февраля 2012

Так что я не уверен, откуда взялся класс Random. Но я всегда использовал Faker gem для этого материала.

Это делает имена, электронные письма, города, номера телефонов: как это:

Faker::Name.name
Faker::Address.uk_country
Faker::Lorem.paragraph

проверить

...