【发布时间】: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