问题描述
has_many,has_and_belongs_to_many和多态关联之间是否存在区别。 为什么要使用多态关联。
解决方法
has_many
,has_and_belongs_to_many
和 polymorphic 关联是解决不同问题的方法。
-
has_many
表示您的父对象包含许多其他子对象。虽然孩子确实只属于那个特定的父母。 -
has_and_belongs_to_many
表示对象未按层次结构进行结构化。而且两侧的物体都可以与其他物体连接。一个很好的例子可能是标记系统。一个事物可以用多个标签来标记。但这些标签不仅属于一件事,还可以添加到其他事物中。 -
polymorphic associations
用于关联未指向其他特定模型的情况。一个示例可能是具有Author
关联的created_work
模型,但它并不指向专用的CreatedWork
模型。但是,相反,它可以返回不同的内容,例如Book
,Play
和Article
的实例或简单的Comment
,它们都是不同的类,并且具有不同的数据库表。