我有一个网络服务,可以向几个不同的客户提供广告。广告的结构因客户端而异,因此,我通过客户端名称为我的模型和 Controller 使用命名空间来区分广告。从高层看,它是这样的:'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
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
最佳答案
我在这里有一个最小的工作示例,也许您可以使用它来确定您的问题所在。您对 dmarkow 的回答留下的评论向我表明您在其他地方有错误。
应用程序/模型/bar/foo.rb
class Bar::Foo < ActiveRecord::Base
end
class Foo < ActiveRecord::Migration
def self.up
create_table :foos do |t|
t.string :name
end
end
def self.down
drop_table :foos
end
end
Factory.define :foo, :class => Bar::Foo do |f|
f.name 'Foooo'
end
require 'spec_helper'
describe Bar::Foo do
it 'does foo' do
foo = Factory(:foo)
foo.name.should == 'Foooo'
end
end
$ rake db:migrate
$ rake db:test:prepare
$ rspec spec/models/foo_spec.rb
.
Finished in 0.00977 seconds
1 example, 0 failures
关于ruby-on-rails-3 - 在命名空间模型上使用 factory_girl_rails 和 Rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6349378/