我有一个具有存档功能的应用程序,允许用户在删除对象后恢复它们。
Organisation
has_many
Contact
,且必须至少有一个。Contact
必须belong_to
一个Organisation
Organisation
只有archived
归档所有关联的Contact
时才会归档。目前我有以下内容。这种方法的问题是,FactoryGirl.create(:archived_organisation)
似乎会触发after(:create)
工厂中的:organisation
个回调:
factory :contact do
name { Faker::Name.first_name }
association :organisation, :factory => :organisation, :contacts_count => 0
factory :archived_contact do
archived true
association :organisation, :factory => :archived_organisation, :contacts_count => 0
end
end
factory :organisation do
name { Faker::Company.name }
ignore do
contacts_count 2
end
after(:create) do |instance, evaluator|
FactoryGirl.create_list(:contact, evaluator.contacts_count, organisation: instance)
end
factory :archived_organisation do
archived true
after(:create) do |instance, evaluator|
FactoryGirl.create_list(:archived_contact, evaluator.contacts_count, organisation: instance)
end
end
end
应该如何实现?是否可以覆盖:organisation
工厂中的after(:create)
:archived_organisation
回调?如果没有,是否可以根据正在创建的工厂动态生成回调?
希望我错过了一些明显的东西,但我欢迎提出一些建议,我应该采取不同的方式。
答案 0 :(得分:1)
怎么样:
after(:create) do |instance, evaluator|
unless instanse.archived
FactoryGirl.create_list(:contact, evaluator.contacts_count, organisation: instance)
end
end