2012-04-02 51 views
0

我想設置多個引用類的類,他們只需要一種方法。爲什麼我不能在Mongoid中有多個1:N和1:1的單向引用?

我有這些類:

class Widget 
    include Mongoid::Document 

    ... 

class Template 
    include Mongoid::Document 

    has_and_belongs_to_many :widgets, inverse_of: nil 
    ... 


class EntryText 
    include Mongoid::Document 

    has_one :widget, inverse_of: nil 
    ... 

當我嘗試類似:

EntryText.new.widget = Widget.first 

我得到這個錯誤:

undefined method `=' for #<Widget: 

我能夠改變輸入的文本有此參考Widget:

has_and_belongs_to_many :widgets, inverse_of: nil 

但由於它只有一個小部件,這是一種醜陋的解決方法。

回答

1

而不是使用has_one :widget,您應該使用belogs_to :widget, inverse_of: nil。 Mongoid(也是活動記錄)在belongs_to一側存儲ID。所以如果關係只需要在一邊保存,它必須是belongs_to,否則我們不能從db返回我們試圖存儲的關聯。

相關問題