Я не самый продвинутый программист, и когда дело доходит до наследования, я знаю, что это такое, но я, вероятно, не использую его, когда должен.Поэтому я спрашиваю некоторые мнения по поводу следующего:
У меня есть приложение Rails, которое отслеживает элементы, которые имеют различные процедуры на основе времени.т.е. пару защитных ботинок, возможно, придется проверять каждые 12 месяцев, а также профессионально чистить, по крайней мере, один раз в 12 месяцев.У них срок службы 10 лет.Каждый день приложение запускает задание cron, которое обновляет таблицу с критическими датами, такими как:
|next_inspection_due|next_cleaning_due|retirement_due|
| 2019-05-28 | 2019-09-09 | 2025-02-01 |
Если какой-либо из них равен < today
, оно будет проверять, установлен ли флаг в таблице Flaggings.Флаги были бы что-то вроде «Inspection Due».Если кто-то отправляет предмет для очистки, завершение события очистки приведет к обновлению даты next_cleaning_due
до одного года с этой даты.
У меня также есть стандартная структура тегов, распространенная во многих приложениях с моделью тегов и моделью тегов со связанными таблицами ...
class Tag < ApplicationRecord
has_many :taggings
has_many :items, through: :taggings
end
class Tagging < ApplicationRecord
belongs_to :tag
belongs_to :item
end
Мои "флаги" - это просто другая форматега концептуально.Но они определены в приложении и ограничены [:inspection_due, :cleaning_due, :retirement_due]
.Есть ли какая-то ценность в том, чтобы мои модели Flag и Flagging наследовали от Tag и Tagging соответственно?В настоящее время они просто отражают их:
class Flag < ApplicationRecord
has_many :flaggings
has_many :items, through: :flaggings
end
class Flagging < ApplicationRecord
belongs_to :flag
belongs_to :item
end
со связанными таблицами.Я слишком много копирую?Не уверен, получит ли я что-нибудь, имея
class Flag < Tag
Или я должен просто сделать эти три флага «предопределенными тегами», которые устанавливаются или сбрасываются приложением только тогда, когда оно выполняет свои проверки состояния и не можетбудет использоваться конечным пользователем в обычном пространстве тегов?
Надеюсь, это не слишком широко или расплывчато.Просто писать это заставляет меня думать, что я дублирую код без необходимости.