在Rails中has_and_belongs_to_many

Jas*_*yon 22 ruby-on-rails has-and-belongs-to-many

在rails中使用has_and_belongs_to_many关联而不是has_many:through有什么明显错误吗?我知道这些 文章 描述了差异和解决方法,但是它们是从2006年开始的.从我读过的东西来看,似乎人们认为habtm陈旧而笨重,但如果一个简单的多对多加入没有必要的模型是你在找什么?

思考?

Can*_*der 29

has_and_belongs_to_many用于简单的多对多关系.

另一方面,has_many:through用于间接的一对多关系,或与属性的多对多关系.

如果您只是寻找一个简单的多对多关系,我看不出有任何理由不使用has_and_belongs_to_many.

示例多对多关系:

用户属于零个或多个组,组具有零个或多个成员(用户).

示例与属性的多对多关系:

用户属于零个或多个组,组具有零个或多个具有等级的成员.

例如,Alice可能是组A中的管理员,组B中的主持人.您可以在连接表中保留此属性.

间接一对多关系示例:

类别具有零个或多个子类别,并且每个子类别具有零个或多个项目.

因此,类别通过其子类别具有零个或多个项目.

考虑以下类别:

食品→水果,蔬菜
水果→苹果,橙子等
蔬菜→胡萝卜,芹菜等

因此:

食物→苹果,橙子,胡萝卜,芹菜等

  • 让我举几个例子. (3认同)
  • 要理解递归,首先必须了解递归.我认为你的答案可以更明确或更具说明性,即与属性的多对多关系与没有属性的多对多关系. (2认同)