在rails中使用has_and_belongs_to_many关联而不是has_many:through有什么明显错误吗?我知道这些 文章 描述了差异和解决方法,但是它们是从2006年开始的.从我读过的东西来看,似乎人们认为habtm陈旧而笨重,但如果一个简单的多对多加入没有必要的模型是你在找什么?
思考?
has_and_belongs_to_many用于简单的多对多关系.
另一方面,has_many:through用于间接的一对多关系,或与属性的多对多关系.
如果您只是寻找一个简单的多对多关系,我看不出有任何理由不使用has_and_belongs_to_many.
示例多对多关系:
用户属于零个或多个组,组具有零个或多个成员(用户).
示例与属性的多对多关系:
用户属于零个或多个组,组具有零个或多个具有等级的成员.
例如,Alice可能是组A中的管理员,组B中的主持人.您可以在连接表中保留此属性.
间接一对多关系示例:
类别具有零个或多个子类别,并且每个子类别具有零个或多个项目.
因此,类别通过其子类别具有零个或多个项目.
考虑以下类别:
食品→水果,蔬菜
水果→苹果,橙子等
蔬菜→胡萝卜,芹菜等
因此:
食物→苹果,橙子,胡萝卜,芹菜等