我正在尝试在 Rails 4 中的两个嵌入式文档之间创建 Mongoid NN 引用关联,但是我发现很难弄清楚这是如何完成的。
我首先将 HABTM 关联添加到下面的相关模型 (Track
和Option
) 但当然我收到错误说这是不允许的,因为它们都是嵌入式的。
class Brief
embeds_many :tracks
end
class Track
embedded_in :brief
has_and_belongs_to_many :options
end
和
class Category
embeds_many :options
end
class Option
field :name, type: String
field :track_ids, type: Array
embedded_in :category
has_and_belongs_to_many :tracks
def parent
self.category
end
def tracks
self.parent.tracks.where(:option_id => self.id)
end
end
我完全理解为什么会这样,并且知道我需要参考父文档,但这是我遇到麻烦的地方。
我一直在尝试track_ids
通过控制台数组将轨道 ID 添加到,但我最终得到了与以前相同的错误:
“问题:由于 Track 是嵌入的,因此不允许通过关系关联从 Option 文档引用 a(n) Track 文档。摘要:为了从 Option 正确访问 a(n) Track,引用需要通过根Track 的文档。在一个简单的情况下,这将需要 Mongoid 为根存储一个额外的外键,在更复杂的情况下,Track 是多个级别的深度,则需要为层次结构中的每个父级存储一个键。
我很乐意存储额外的外键,但我不知道如何以及以什么格式。如果有人能指出我正确的方向,我将不胜感激。