У меня есть модель «WorkDetail», а db-attrs, связанные с проблемой, - это «имя», «статус» и «утвержденный_статус» с целым типом данных, а определение класса модели выглядит следующим образом: -
class WorkDetail < ActiveRecord::Base
enum name: [:smartcheck, :install, :verify]
enum status: [:pending, :inprogress, :complete]
belongs_to :work_order
has_many :cabinets
after_save :work_order_status_update
private
def work_order_status_update
work_detail_count = self.work_order.work_details.count
status_array = self.work_order.work_details.where(status: 2).count
if status_array == work_detail_count
if work_detail_count == 0
self.work_order.update({status: "pending"})
else
self.work_order.update({status: "complete"})
end
else
self.work_order.update({status: "inprogress"})
end
end
end
Теперь я хотел бы добавить пользовательскую проверку, которая будет применяться для следующей проблемы: -
проверка должна применяться только для процесса обновления.
Если объект
name == "smartcheck"
иstatus == "complete"
, то только логический атрибутapproved_status
должен быть отupdated
доtrue
(по умолчанию при переносе значение false), в противном случае должна выдаваться ошибка, если не выполнена проверка smartcheck, и статус не завершен при попытке обновить атрибут author_status.
Надеюсь, что вопрос имеет смысл и спасибо !!! заранее, ребята, Happy Coding.