2015-11-04 104 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)幫助我發現。

相關問題