Лучшая стратегия наследования ActiveRecord для абстрактного класса и подкласса - PullRequest
2 голосов
/ 13 января 2012

пытается выяснить лучшую стратегию наследования 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 Ответ

1 голос
/ 14 января 2012

Я считаю, что это подходящее использование для наследования одной таблицы (STI (.

Вы можете запросить Message.all или ColorMessage.all, и рельсы позаботятся о приведении объекта для вас.

...