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

发布于 2024-12-27 01:49:25 字数 632 浏览 0 评论 0原文

试图找出解决这个特定问题的最佳 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,在这种情况下这是正确的解决方案吗?

感谢您的帮助!

trying to figure out the best ActiveRecord inheritance strategy for this particular problem:

I have an abstract class, let's call it Message with the following methods/attributes.

Message
  |- recipient
  |- sender
   \ body

And I have two sub classes

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")

I'd like to be able to run a query for all Messages and display their bodies without having to worry about their concrete types. Basically treating Message as an interface.

I am familiar with STI, is that the correct solution in this case?

Thanks for your help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白日梦 2025-01-03 01:49:25

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

您可以请求 Message.all 或 ColorMessage.all,rails 将为您处理对象转换。

I consider this an appropriate use for single-table-inheritance (STI(.

You can ask for Message.all or ColorMessage.all and rails will take care of the object casting for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文