Ruby 关于 rails 多态关联

Ruby on rails polymorphic associations

has_many、has_and_belongs_to_many和多态关联有区别吗? 为什么要用多态关联

has_manyhas_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 的实例、PlayArticle 的实例,或者一个简单的 Comment,它们都是不同的 类 并且有不同的数据库表。