У меня есть два класса, Задача и Подзадача. Подзадача очень мало отличается от Задачи, за исключением одной важной вещи, она должна включать другой модуль.
Включенные модули, subtask_module и task_module, оба имеют одинаковые методы и псевдонимы для моих целей, но внутренне они функционируют немного по-разному, когда включенный модуль расширяет свои методы. Для меня нет способа обойти это, потому что я использую плагин.
Например, ниже, вы видите belongs_to
в Задаче. belongs_to
расширен от включенного модуля, однако его функции немного отличаются в зависимости от того, какой модуль я включаю.
class Subtask < Task
include subtask_module
end
class Task
include task_module
# methods and aliases both classes use (defined in included file)
# but behavior changes based on
# included file
belongs_to :template
end
Какой лучший способ сделать что-то подобное? Прямо сейчас это работает как сейчас. Но это кажется раздутым, потому что в Задаче будут объявлены неиспользованные вещи, которые мне не нужны.
Какой самый лучший способ?