抽象类和子类的最佳ActiveRecord继承策略

时间:2012-01-13 18:50:50

标签: ruby-on-rails ruby oop activerecord single-table-inheritance

试图找出针对此特定问题的最佳ActiveRecord继承策略:

我有一个抽象类,让我们用以下方法/属性称它为Message

Message
  |- recipient
  |- sender
   \ body

我有两个子类

ColorMessage < Message
  |- first_color
  |- second_color
   \ body (returns "#{sender.name} says #{first_color} > #{second_color}")

WeatherMessage < Message
  |- current_weather_adverb
   \ body (returns "#{sender.name} enjoys #{current_weather_adverb} weather")

我希望能够为所有Message运行查询并显示他们的身体,而不必担心他们的具体类型。基本上将Message视为接口。

我熟悉STI,在这种情况下,这是正确的解决方案吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我认为这适用于单表继承(STI(。

您可以要求Message.all或ColorMessage.all,rails会为您处理对象投射。