Ruby 关于 rails 多态关联
Ruby on rails polymorphic associations
has_many、has_and_belongs_to_many和多态关联有区别吗?
为什么要用多态关联
has_many
、has_and_belongs_to_many
和多态关联是针对不同问题的解决方案。
has_many
表示您有一个 parent object,还有许多其他 children。虽然 children 只属于那个特定的 parent.
has_and_belongs_to_many
表示 object 不是分层结构。并且两侧的 objects 可以连接到多个其他人。一个很好的例子可能是标签系统。一个事物可以用多个标签来标记。但是标签不仅仅属于一个事物,它们也可以添加到其他事物中。
polymorphic associations
在关联未指向一个特定的其他模型时使用。一个示例可能是具有 created_work
关联的 Author
模型,但它不指向专用的 CreatedWork
模型。但是相反,它可以 return 不同的东西,比如 Book
的实例、Play
和 Article
的实例,或者一个简单的 Comment
,它们都是不同的 类 并且有不同的数据库表。
has_many、has_and_belongs_to_many和多态关联有区别吗? 为什么要用多态关联
has_many
、has_and_belongs_to_many
和多态关联是针对不同问题的解决方案。
has_many
表示您有一个 parent object,还有许多其他 children。虽然 children 只属于那个特定的 parent.has_and_belongs_to_many
表示 object 不是分层结构。并且两侧的 objects 可以连接到多个其他人。一个很好的例子可能是标签系统。一个事物可以用多个标签来标记。但是标签不仅仅属于一个事物,它们也可以添加到其他事物中。polymorphic associations
在关联未指向一个特定的其他模型时使用。一个示例可能是具有created_work
关联的Author
模型,但它不指向专用的CreatedWork
模型。但是相反,它可以 return 不同的东西,比如Book
的实例、Play
和Article
的实例,或者一个简单的Comment
,它们都是不同的 类 并且有不同的数据库表。