【发布时间】:2011-07-18 09:39:42
【问题描述】:
我正在尝试使用 Faker gem 将一些虚假数据填充到工厂中:
Factory.define :user do |user|
user.first_name Faker::Name::first_name
user.last_name Faker::Name::last_name
user.sequence(:email) {|n| "user#{n}@blow.com" }
end
然而,虽然我希望这会产生具有不同名字和姓氏的用户,但每个用户都是相同的:
>> Factory(:user)
=> #<User id: 16, email: "user7@blow.com", created_at: "2011-03-18 18:29:33",
updated_at: "2011-03-18 18:29:33", first_name: "Bailey", last_name: "Durgan">
>> Factory(:user)
=> #<User id: 17, email: "user8@blow.com", created_at: "2011-03-18 18:29:39",
updated_at: "2011-03-18 18:29:39", first_name: "Bailey", last_name: "Durgan">
如何让 Faker gem 为每个用户生成新名称,而不仅仅是重复使用原来的名称?
【问题讨论】:
-
只是在黑暗中拍摄,但您是否尝试过使用
user.sequence(:first_name} {|n| Faker::Name::first_name}之类的东西? FactoryGirl 可能只是在加载您的“夹具”时评估您的 Faker 调用。使用sequence param,&block方法应该可以防止这种情况发生。