module Approval2::ModelAdditions

Public Instance Methods

approve() click to toggle source
# File lib/approval2/model_additions.rb, line 33
  def approve
     return "The record version is different from that of the approved version" if !self.approved_record.nil? and self.approved_version != self.approved_record.lock_version    

#    make the U the A record, also assign the id of the A record, this looses history
#    self.approval_status = 'A'
#    self.approved_record.delete unless self.approved_record.nil?
#    self.update_column(:id, self.approved_id) unless self.approved_id.nil?
#    self.approved_id = nil


    if self.approved_record.nil?
      # create action, all we need to do is set the status to approved
      self.approval_status = 'A'
      return self
    end

    # edit action
    # copy all attributes of the U record to the A record, and delete the U record
    attributes = self.attributes.select do |attr, value|
      self.class.column_names.include?(attr.to_s) and
      ['id', 'approved_id', 'approval_status', 'lock_version', 'approved_version', 'created_at', 'updated_at', 'updated_by', 'created_by'].exclude?(attr)
    end

    self.class.unscoped do
      approved_record = self.approved_record
      approved_record.assign_attributes(attributes)
      approved_record.last_action = 'U'
      approved_record.updated_by = self.created_by
      self.destroy
      return approved_record
    end    
  end
enable_approve_button?() click to toggle source
# File lib/approval2/model_additions.rb, line 66
def enable_approve_button?
  self.approval_status == 'U' ? true : false
end
on_create_create_unapproved_record_entry() click to toggle source
# File lib/approval2/model_additions.rb, line 70
def on_create_create_unapproved_record_entry
  if approval_status == 'U'
    UnapprovedRecord.create!(:approvable => self)
  end
end
on_destory_remove_unapproved_record_entries() click to toggle source
# File lib/approval2/model_additions.rb, line 76
def on_destory_remove_unapproved_record_entries
  if approval_status == 'U'
    unapproved_record_entry.delete
  end
end
on_update_remove_unapproved_record_entries() click to toggle source
# File lib/approval2/model_additions.rb, line 82
def on_update_remove_unapproved_record_entries
  if approval_status == 'A' and approval_status_was == 'U'
    unapproved_record_entry.delete
  end
end
validate_unapproved_record() click to toggle source
# File lib/approval2/model_additions.rb, line 29
def validate_unapproved_record
  errors.add(:base,"Unapproved Record Already Exists for this record") if !unapproved_record.nil? and (approval_status == 'A' and approval_status_was == 'A')
end