Sha256: 54a5d7abbeaac4c99458c30260f5a397455ee3342d4f3db8a670dedc631f579e
Contents?: true
Size: 1.12 KB
Versions: 2
Compression:
Stored size: 1.12 KB
Contents
module Approval class Request < ::ActiveRecord::Base self.table_name_prefix = "approval_".freeze class << self def define_user_association(klass) with_options class_name: klass.to_s do belongs_to :request_user belongs_to :respond_user, optional: true end end end with_options dependent: :destroy, inverse_of: :request do has_many :comments, class_name: "::Approval::Comment" has_many :items, class_name: "::Approval::Item" end enum state: { pending: 0, cancelled: 1, approved: 2, rejected: 3 } scope :recently, -> { order(id: :desc) } with_options presence: true do validates :state validates :respond_user, unless: :pending? validates :comments validates :items end 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
approval-0.3.1 | lib/approval/models/approval/request.rb |
approval-0.3.0 | lib/approval/models/approval/request.rb |