2015-11-13 4 views
0

Я хочу переопределить родительский класс с использованием фабрики подкласса. Например, я хочу изменить поддомен подкласса, чтобы он переопределял его из родительского класса.FactoryGirl переопределить подкласс атрибута родительского класса

файл campaign.rb

FactoryGirl.define do 
    factory :campaign do 
    subdomain 'thrifty' 
    end 
end 

файл photo_upload_campaign.rb

FactoryGirl.define do 
    factory :photo_upload_campaign, parent: :campaign do 
    subdomain 'weekender' 
    end 
end 

файл определения шага

Given(/^there's a subdomain for a photo upload campaign campaign$/) do 
    @campaign = create(:campaign) 
    @photo_upload = create(:photo_upload_campaign) 
    if [email protected]? 
    fail(ArgumentError.new('Where is the subdomain?')) 
    end 
end 

When(/^I visit the photo upload campaign microsite subdomain url$/) do 
    visit_with_subdomain microsite_home_path, subdomain: @photo_upload.subdomain 
end 
+0

Я действительно не понимаю, что вы пытаетесь сделать - указав родительский:: кампанию для фабрики photo_upload_compaign, вы говорите, что это кампания только с субдоменом, установленным на «weekender» по умолчанию, экономный "- тогда в вашем тесте вы создаете один из них - так что у вас есть 2 объекта кампании, 1 с субдоменом" экономный ", один с субдоменом" weekender "- в чем проблема? –

+0

Я могу сделать '@campaign.subdomain = 'weekender''. '@photo_upload_subdomain = @ campaign.subdomain'. Но это победит цель использования наследования? – khoamle

+0

Как вы думаете, наследуете? '@ photoupload' не является объектом, наследующим от' @ campaign' - это 2 полностью отдельных объекта. Родитель:: кампания в заводском определении просто заставляет фабрику photo_upload_campaign использовать настройки фабрики кампании, если они не переопределены на фабрике photo_upload_campaign - каждый вызов для создания все еще создает полностью независимые объекты. –

ответ

0

Я мог бы просто создать завод викторины кампании, и он получает все атрибуты от кампании

FactoryGirl.define do 
    factory :quiz_campaign do 
    subdomain 'weekender' 
    end 
end 
Смежные вопросы