/ / Краща стратегія успадкування ActiveRecord для абстрактного класу та підкласу - ruby-on-rail, ruby, oop, activerecord, single-table inheritance

Краща стратегія успадкування ActiveRecord для абстрактного класу та підкласу - ruby-on-rail, 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 як інтерфейс.

Я знайомий з ІПСШ, чи є це правильне рішення в даному випадку?

Спасибі за вашу допомогу!

Відповіді:

1 для відповіді № 1

Я вважаю це належним використанням для однонаступного спадкування (STI (.

Ви можете попросити Message.all або ColorMessage.all, і рейки підберуть для вас об'єкт.