我正在尝试设置多个引用类的类,它们只需要一种方式。
我有这些课程:
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:
我可以更改Entry Text以获得对Widget的引用:
has_and_belongs_to_many :widgets, inverse_of: nil
但由于它只有一个小部件,这是一种丑陋的解决方法。
答案 0 :(得分:1)
您应该使用has_one :widget
而不是belogs_to :widget, inverse_of: nil
。 Mongoid(也是活动记录)在belongs_to
侧存储id。因此,如果关系只需要在一侧持久化,那么它必须是belongs_to
,否则我们无法从数据库中找回我们试图存储的关联。