0

我在设计数据模型时遇到了麻烦。

我有主对象“A”及其子对象“B”,“B”有很多“C”,但有些“C”也可以是免费的(不属于任何“B”)。

通过标准 mas_many/belongs_to Mongoid 相关外键存储在“C”中。而且它并没有那么糟糕,即使它是孤儿也能正常工作,但我认为它看起来并不好。有什么方法可以让 Mongoid 将子 ID 存储在父列表字段中?

4

2 回答 2

1

您所描述的听起来像belongs to many,并且有一种方法可以通过has_and_belongs_to_many在 B 类上使用关系来实现。

但在我看来,您最初的方法在语义上更好,但这取决于您自己的选择。

于 2013-08-05T14:11:55.537 回答
0

对于未来的观众......

我结束了使用:

before_add在has_and_belongs_to_many的回调中,我添加了类似object_to_add.c_id ||= self.id. 这样,您就可以在父项中列出 ID。

具有多个类别的播放列表的示例:

class Playlist
  has_and_belongs_to_many :categories, before_add: :add_playlist_id, inverse_of: :playlist

  private

  def add_playlist_id(category)
    category.playlist_id ||= id
  end
end


class Category
  belongs_to :playlist, inverse_of: :categories
end
于 2018-06-05T18:28:48.307 回答