Sha256: fb08950682c7b544b209578a70f576ce9e5af94b4b1ac5f6723fe3be392c4ce6
Contents?: true
Size: 1.15 KB
Versions: 1
Compression:
Stored size: 1.15 KB
Contents
module Approval class Request < ApplicationRecord self.table_name = :approval_requests def self.define_user_association belongs_to :request_user, class_name: Approval.config.user_class_name belongs_to :respond_user, class_name: Approval.config.user_class_name, optional: true end has_many :comments, class_name: :"Approval::Comment", inverse_of: :request, dependent: :destroy has_many :items, class_name: :"Approval::Item", inverse_of: :request, dependent: :destroy enum state: { pending: 0, cancelled: 1, approved: 2, rejected: 3 } scope :recently, -> { order(id: :desc) } validates :state, presence: true validates :respond_user, presence: true, unless: :pending? validates :comments, presence: true validates :items, presence: true validates_associated :comments validates_associated :items validate :ensure_state_was_pending before_create do self.requested_at = Time.current end private def ensure_state_was_pending return unless persisted? errors.add(:base, :already_performed) if state_was != "pending" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
approval-0.3.7 | app/models/approval/request.rb |