У меня есть веб-сервис, который обслуживает объявления для нескольких разных клиентов. Структура объявления варьируется в зависимости от клиента, и поэтому я использую пространства имен для своих моделей и контроллеров по имени клиента, чтобы различать объявления. С высокого уровня это выглядит так:
'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
Это не сделало работу. Я огляделся вокруг, но каждый пример, который я видел, использовал модели без пространства имен. У кого-нибудь есть идеи? Любой вклад приветствуется.