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