У меня есть веб-сервис, который обслуживает рекламу нескольким различным клиентам. Структура объявления зависит от клиентов, и поэтому я использую пространства имен для своих моделей и контроллеров по имени клиента для различения рекламы. С высокого уровня он выглядит так:
'app/models/client1/ad.rb'
class Client1::Ad < ActiveRecord::Base
attr_accessible :title, :description
end
'app/models/client2/ad.rb'
class Client2::Ad < ActiveRecord::Base
attr_accessible :title, :description, :source
end
В действительности эти модели более сложны и имеют ассоциации, но это не главное.
Я пишу некоторые модульные тесты, используя rspec-rails 2.4.0 и factory_girl_rails 1.0.1, и все мои заводы работают отлично. Однако я не могу определить фабрики для моделей с именами. Я пробовал что-то вроде:
Factory.define :client1_ad, :class => Client1::Ad do |ad|
ad.title "software tester"
ad.description "Immediate opening"
end
и
Factory.define :client2_ad, :class => Client2::Ad do |ad|
ad.title "software tester"
ad.description "Immediate opening"
ad.source "feed"
end
Это не сработало. Я огляделся, но каждый пример, который я видел, использовал модели, не содержащие имен. У кого-нибудь есть идеи? Любые входные данные приветствуются.