2016-02-02 138 views
0

美好的一天!
我试图在我的测试中创建模型时创建随机值。使用factory_girl和摊贩宝石faker和factory_girl烦恼

我的Gemfile.lock的的

factory_girl_rails (4.5.0) 
factory_girl (~> 4.5.0) 
faker (1.6.1) 

我厂定义如下

FactoryGirl.define do 
    factory :action do 
    name Faker::Internet.email 
    id Faker::Number.digit 
    ip Faker::Internet.ip_v4_address 
    old_value Faker::Number.number(7) 
    end 
end 

但在我的测试中,当我尝试创建对象,它们具有相同的属性。

> create :logger 
id: 17, 
new_value: 3133860, 
name: "[email protected]", 
ip: "118.247.64.189", 
created_at: Tue, 02 Feb 2016 09:12:50 UTC +00:00, 
updated_at: Tue, 02 Feb 2016 09:12:50 UTC +00:00> 

和第二次

> create :logger 
    id: 18, 
    new_value: 3133860, 
    name: "[email protected]", 
    ip: "118.247.64.189", 
    created_at: Tue, 02 Feb 2016 09:12:53 UTC +00:00, 
    updated_at: Tue, 02 Feb 2016 09:12:53 UTC +00:00> 

再来一次 - 我试图通过法克尔宝石随机有效属性每次我创建一个新的对象时,以获取factory_girl。
你能帮我解决这个问题吗?

回答

1

您可以使用sequence产生不同的数据每次运行:

FactoryGirl.define do 
    factory :action do 
    sequence(:name) { |n| "user_#{n}@factory.com" } 
    sequence(:id) { |n| Faker::Number.digit + n } 
    ip Faker::Internet.ip_v4_address 
    old_value Faker::Number.number(7) 
    end 
end 

顺便说一句id会自动生成,随意删除id

+0

这不是我问过的。我在谈论Faker – Elmor