2016-03-17 20 views
2

我正在學習如何在Rails中使用fabrication,並且我們決定用製造來替換我們所有的factory_girl代碼。如何使用製作來定義特質

假設我們有這樣的代碼在factory_girl

FactoryGirl.define do 
    factory :user do 
    trait(:no_credits) { credits 0 } 
    trait(:with_credits) { credits 300 } 

你怎麼會在製作這個定義?我已經瀏覽了他們的網站,但找不到任何關於此的信息。會感謝你的幫助

回答

1

看來你正在尋找Fabricator inheritance,這是何等的文檔說:

您可以通過使用:from屬性繼承其他加工廠屬性。

Fabricator(:llc, from: :company) do 
    type "LLC" 
end 

設置:from選項將繼承指定的加密器的類和所有屬性。

您還可以使用參數:class_name明確指定正在製作的類。

Fabricator(:llc, class_name: :company) do 
    type "LLC" 
end 
+0

你確定繼承嗎?因爲'trait'更像定義自定義屬性。在我的例子中,'user'將具有'credits'0。我不認爲繼承是正確的方法。 – python

+0

您可以在基類上定義默認值,每個繼承類將覆蓋一些默認值。我認爲它會像你期望的那樣行事。試試看,並告訴我它是否工作:) – Axxiss

+0

在工廠女孩,我們也有'後(:創建)',我們可以使用'特質'。你是否知道我可以用類似的方法做類似的事情? – python