2013-04-03 49 views
1

我有一個類如何製造對象構造函數中蒙戈模型需要參數

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方法。如果我刪除它的構造函數。

蒙戈版本2.4.1 製造(2.6.4) 軌(3.2.11)

回答

2

那是因爲你的super通話將通過您的自定義參數傳遞給Mongoid::Document初始化一個期望(最多)兩個散列,不是兩個對象。 該解決方案或者調用super(),它將不傳遞參數,或者重寫構造函數以僅傳遞其他參數:

def initialize(objectA, objectB, args = nil, options = nil) 
    super(args, options) 
    @objectA = objectA 
    @objectB = objectB 
end 
相關問題