多态关联以具有不同类型的has_many建模

时间:2020-01-28 19:09:58

标签: ruby-on-rails ruby inheritance model

我正在学习Rails,目前正在开发我的第一个应用程序。

我有一章有许多活动。有不同类型的活动,它们都有非常不同的属性。我有一个基本的Activity和不同的子类来表示每种Activity类型。

我在不使用STI的情况下对这种情况进行建模存在问题(因为我不希望单个表包含许多空列)。我阅读了有关多态关联的文章,但是我不确定如何使用此功能对这种情况进行建模(甚至不确定这种情况是否适合多态关联)。

有人使用此功能为这种模型建模吗?

1 个答案:

答案 0 :(得分:0)

如果每种活动类型都有一个表,则可以执行以下操作:

  • 为每种活动类型创建一个类。它们都必须继承自ActiveRecord::Base
  • 在一个模块中实现常见的活动行为,并在每个活动类中都包含该模块。
  • 在每个活动类中使用belongs_to :chapter关系
  • 在章节类的每个活动类中使用一个has_many关系

如果您需要帮助者从一章中一次访问所有活动,则必须自己使用SQL联合实例来实现。