2015-11-04 105 views
1

我已为我的请求模型创建了一个工厂。该模型具有一个布尔值,该值在数据库级别默认为“false”。我创建了一个名为:fulfilled_request的工厂,该工厂使用FactoryGirl中的特征特征,但即使它正在被调用,但创建的请求实例的is_fulfilled属性为false。有任何想法吗?以下是我的工厂:FactoryGirl:如何将特征设置为真

factory :request do 
    content { Faker::Lorem.paragraph } 
    association :requester 
    association :group 

    trait :has_neighbor do 
     association :responder 
    end 

    trait :is_fulfilled do 
     is_fulfilled true 
    end 

    trait :created_one_day_ago do 
     created_at { 1.day.ago } 
    end 

    factory :request_with_neighbor, traits: [:has_neighbor] 
    factory :fulfilled_request , traits: [:has_neighbor, :is_fulfilled] 
    factory :day_old_request, traits: [:created_one_day_ago] 
    end 
+0

您的意思是说:'FactoryGirl.create(:fulfilled_request).is_fulfilled'会为您返回false?或者还有其他一些逻辑? –

+0

你能告诉你如何在规范中调用工厂吗?你的模型上的专栏也叫做“is_fulfilled”或者“完成”。 – DustinFisher

回答

0

打电话给你的工厂是这样的。

FactoryGirl.create(:request, :is_fulfilled) 

这将使用你所需要的特质。

0

不幸的是,这不起作用的原因是在模型中有一个after_create回调,它将is_fulfilled属性设置为false

这样做是为了反映模型中的数据库约束。我认为这是罕见的时代之一,当它在模型中反映数据库约束是没有意义的。数据库设置为默认此属性为false。 (因此数据库应该而不是也有NOT NULL约束)。

我只是发布这个完整的文档,并帮助其他人可能有这个问题。检查你的回调!

P.S.感谢sikachu#thoughtbot(irc)帮助我发现。

相关问题