2012-04-02 53 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返回我们试图存储的关联。

相关问题