Я хочу иметь определенные флаги для элементов в моем приложении Rails, задаваясь вопросом, стоит ли мне расширять свой класс Tag или создавать новый класс Flag? - PullRequest
0 голосов
/ 29 мая 2019

Я не самый продвинутый программист, и когда дело доходит до наследования, я знаю, что это такое, но я, вероятно, не использую его, когда должен.Поэтому я спрашиваю некоторые мнения по поводу следующего:

У меня есть приложение 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

Или я должен просто сделать эти три флага «предопределенными тегами», которые устанавливаются или сбрасываются приложением только тогда, когда оно выполняет свои проверки состояния и не можетбудет использоваться конечным пользователем в обычном пространстве тегов?

Надеюсь, это не слишком широко или расплывчато.Просто писать это заставляет меня думать, что я дублирую код без необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...