2012-04-02 6 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 
    ... 

:私が持っているエントリのテキストを変更することができる午前

undefined method `=' for #<Widget: 

EntryText.new.widget = Widget.first 

を私はこのエラーを取得しますウィジェットへの参照:

has_and_belongs_to_many :widgets, inverse_of: nil 

しかし、ウィジェットは1つしかないので、これは一種の回避策です。

答えて

1

has_one :widgetの代わりにbelogs_to :widget, inverse_of: nilを使用してください。 Mongoid(アクティブレコードも)は、belongs_to側にidを格納します。したがって、関係を一方の側でのみ保持する必要がある場合は、belongs_toでなければなりません。それ以外の場合は、格納しようとした関連をdbから戻すことはできません。

関連する問題