【问题标题】:How to properly randomize data with seed.rb using Factory Girl and random_data?如何使用 Factory Girl 和 random_data 使用 seed.rb 正确随机化数据?
【发布时间】:2012-02-07 08:35:08
【问题描述】:

我尝试使用一个简单的脚本来填充我的数据库,从而为我的模型创建足够数量的记录来考虑所有依赖关系(尤其是多态性),从而生成测试数据。

这是我的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 个问题,例如,“在西班牙旅行的最佳地点是哪里?”以及每个相同的两段文字。

我错过了什么?

【问题讨论】:

  • seeds.rb 应该只用于向数据库添加所需的“静态”数据,而不是“固定”它。要创建基础数据以便您可以在开发中手动测试应用程序,您应该创建一个 rake 任务(我们有 rake db:populate
  • 感谢您指出这一点。但是,如果我在单独的任务中运行相同的行为,您会期望行为发生变化吗?

标签: ruby-on-rails-3 factory-bot factories


【解决方案1】:

所以我不确定Random 类是从哪里来的。但我总是使用Faker gem 来处理这些东西。

它包含姓名、电子邮件、城市、电话号码:像这样:

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

检查一下

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多