我有一个班级
class Transaction
include Mongoid::Document
belongs_to :objectA
belongs_to :objectB
def initialize(objectA, objectB)
super
@objectA = objectA
@objectB = objectB
end
end
现在我正在尝试整理Fabricator
Fabricator(:transaction) do
on_init do
init_with(Fabricate(:klassA), Fabricate(:klassB))
end
end
我已经创建了Fabricator(:klassA)
和Fabricator(:klassB)
,效果很好。
我不断收到此错误消息:
NoMethodError: undefined method `[]' for #<Fabrication::Schematic::Attribute:0x007f9361b59950>
我很确定它与initialize方法有关。如果我删除它的构造函数。
Mongo版本2.4.1 制作(2.6.4) rails(3.2.11)
答案 0 :(得分:2)
这是因为您的super
调用会将您的自定义参数传递给期望(最多)两个哈希值的Mongoid::Document
初始化程序,而不是两个对象。
解决方案是要么调用super()
,要么不传递任何参数,要么重写构造函数以仅传递其他参数:
def initialize(objectA, objectB, args = nil, options = nil)
super(args, options)
@objectA = objectA
@objectB = objectB
end