Ruby on rails 如何使用需要参数的构造函数为mongo模型构造对象

Ruby on rails 如何使用需要参数的构造函数为mongo模型构造对象,ruby-on-rails,ruby-on-rails-3,mongoid,fabrication-gem,Ruby On Rails,Ruby On Rails 3,Mongoid,Fabrication Gem,我有一节课 class Transaction include Mongoid::Document belongs_to :objectA belongs_to :objectB def initialize(objectA, objectB) super @objectA = objectA @objectB = objectB end end 现在,我正试图组建一个制造商 Fabricator(:t

我有一节课

class Transaction
    include Mongoid::Document

    belongs_to :objectA
    belongs_to :objectB

    def initialize(objectA, objectB)
        super
        @objectA = objectA
        @objectB = objectB
    end
end
现在,我正试图组建一个
制造商

Fabricator(:transaction) do
     on_init do
        init_with(Fabricate(:klassA), Fabricate(:klassB))
     end
end
我已经创建了
制造者(:klassA)
制造者(:klassB)
,它们工作得很好

我一直收到以下错误消息:

NoMethodError:for#的未定义方法“[]”

我相当肯定它与initialize方法有关。如果我移除构造函数,它就会工作

Mongo版本2.4.1 制造(2.6.4)
rails(3.2.11)

这是因为您的
super
调用将把您的自定义参数传递给
Mongoid::Document
初始值设定项,该初始值设定项需要(最多)两个散列,而不是两个对象。 解决方案是调用
super()
,它将不传递任何参数,或者重写构造函数以只传递其他参数:

def initialize(objectA, objectB, args = nil, options = nil)
    super(args, options) 
    @objectA = objectA
    @objectB = objectB
end