ruby-on-rails-3 - 在命名空间模型上使用 factory_girl_rails 和

我有一个网络服务,可以向几个不同的客户提供广告。广告的结构因客户端而异,因此,我通过客户端名称为我的模型和 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

实际上,这些模型更加复杂并且具有关联性,但这不是重点。
我正在使用 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

它没有完成任务。我环顾四周,但我看到的每个示例都使用非命名空间模型。有人有想法么?非常感谢任何输入。

最佳答案

我在这里有一个最小的工作示例,也许您可​​以使用它来确定您的问题所在。您对 dmarkow 的回答留下的评论向我表明您在其他地方有错误。

应用程序/模型/bar/foo.rb

class Bar::Foo < ActiveRecord::Base
end

*db/migrate/20110614204536_foo.rb*
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

规范/工厂.rb
Factory.define :foo, :class => Bar::Foo do |f|
  f.name 'Foooo'
end

*spec/models/foo_spec.rb*
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/

相关文章:

swift - 类型 'Category'(aka 'OpaquePointer')的值没有成员 '

c - 使用指针的程序运行不正常

c++ - 为什么 “std::isdigit”在Windows上的C++中报告 “no match

python - mysql-python的pip安装错误无法正常工作

java - “Cannot find symbol class keyboard reader”

c++ - 编译器错误: not declared in the scope

c# - 无法将类型int隐式转换为int数组

c++ - 编译器在声明类时显示未定义的结构错误

c++ - LNK2019未解析的外部符号。创建二叉树

delphi - delphi编译错误 "[DCC Error] ProjectName.dpr([