我有一个网络服务,向多个不同的客户端提供广告。由于广告的结构因客户而异,我使用命名空间按客户名称对模型和控制器进行区分以区分广告。从高层次上看,它看起来像这样:
'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
它没有完成工作。我找了一下,但是我看到的每个示例都使用非命名空间模型。有人有任何想法吗?非常感谢任何输入。
rake db:test:prepare
。已接受,投票支持。 - Simon Bagreevbar_foos
而不是foos
吧? - Mohamad