ruby – 如何为命名空间类定义Fabricator

前端之家收集整理的这篇文章主要介绍了ruby – 如何为命名空间类定义Fabricator前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想定义Fabricator for class有’Foo :: Bar’这样的命名空间.
告诉我它的工作方式.

在这里我的代码.

车型/ foo.rb

class Foo
  include Mongoid::Document
  embedded_in :foo_container,polymorphic: true

  field :xxx ....
end

车型/富/ bar.rb

class Foo::Bar < Foo
  field :yyy ....
  field :zzz ....
end

数据/制造者/ foo_bar_fabricator.rb

Fabricator(:foo_bar,class_name: 'Foo::Bar') do
   yyy 'MyString'
   zzz 'MyString'
end

当我尝试在parino控制台上创建Fabricatior对象但发生错误.

> Fabricate(:foo_bar)
> NoMethodError: undefined method `new?' for nil:NilClass
  .... stack messages

当我尝试创建其他Fabricator对象时不是像’User’这样的命名空间类,它就是正确的.

解决方法

根据Fabrication在 creating objects上的文档:

To use a different name from the class,you must specify from: :symbolized_class_name as the second argument.

所以以下应该有效:

Fabricator(:foo_bar,from: 'Foo::Bar') do
  yyy 'MyString'
  zzz 'MyString'
end

猜你在找的Ruby相关文章