Я начинаю использовать шаблон проблем в проекте, и, поскольку это первый раз, когда он используется, некоторые вопросы приходят на ум. Прежде всего, позвольте мне поделиться скомпилотом кода, над которым я работаю, для уточнения.Вопросы о проблемах с Rails
module Approvable
extend ActiveSupport::Concern
included do
#validations
validates :approval_status,
presence: true,
inclusion: { :in => NixusValidation::ValidApprovalStatuses, :message => :inclusion, unless: 'approval_status.blank?' }
#scopes:
scope :approved, -> { where(approvalStatus: NixusValidation::ApprovalStatuses::APPROVED) }
scope :pending, -> { where(approvalStatus: NixusValidation::ApprovalStatuses::PENDING) }
scope :unapproved, -> { where(approvalStatus: NixusValidation::ApprovalStatuses::UNAPPROVED) }
end
#INSTANCE METHODS
#methods:
def approved?()
self.approval_status == NixusValidation::ApprovalStatuses::APPROVED
end
end
Эта проблема определяет общие черты «утверждаемой» модели, то, что должно быть одобрено как запрос присоединиться к примеру. Каждая одобряемая модель в моем проекте имеет 3 состояния, одобренные, ожидающие решения и неутвержденные. Вот некоторые из моих сомнений в коде, который я написал.
Для этого необходимо иметь атрибут appro_status, который необходимо каким-то образом сохранить. Это неправильно? Должны ли проблемы определять только интерфейсы? Если нет, как я могу обеспечить наличие этого атрибута в Rails? Есть ли способ сказать генератору модели рельсов всегда включать этот атрибут в подходящие модели без наследования?
Мне также необходимо реализовать метод approve(), но каждый подходящий класс имеет свой собственный процесс утверждения. Единственное, что можно сказать о том, что если все будет одобрено, то (?) Должно возвратиться после этого. Существует ли способ обеспечить существование метода approve(), если класс включает в себя вопрос «Утверждаемый»?
Это хороший случай для использования проблем?
Надеюсь, я поняла.
Спасибо заранее,
Почему вы не создаете класс полиморфной модели для обработки всех утвержденных моделей вместо добавления столбца 'approventStatus' в таблицу каждой модели? – Surya