Module: Approvable::ActsAsApprovable::LocalInstanceMethods

Defined in:
lib/approvable/acts_as_approvable.rb

Instance Method Summary collapse

Instance Method Details

#apply_changesObject



54
55
56
57
# File 'lib/approvable/acts_as_approvable.rb', line 54

def apply_changes
  self.assign_attributes_without_change_request requested_changes
  self
end

#approve_changesObject



73
74
75
76
77
78
79
# File 'lib/approvable/acts_as_approvable.rb', line 73

def approve_changes
  transaction do
    current_change_request.approve! if current_change_request
    apply_changes.save
    reload
  end
end

#assign_attributes_with_change_request(new_attributes) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/approvable/acts_as_approvable.rb', line 86

def assign_attributes_with_change_request new_attributes
  ignored_params = ignored_attributes(new_attributes)
  approvable_params = approvable_attributes(new_attributes)

  if approvable_params.any?
    current_change_request || build_current_change_request(requested_changes: {})       
    current_change_request.requested_changes = requested_changes.merge approvable_params
  end

  assign_attributes_without_change_request ignored_params
end

#change_statusObject

use current_change_request here so that we dont get pending from a newly built change_request



46
47
48
# File 'lib/approvable/acts_as_approvable.rb', line 46

def change_status
  current_change_request ? current_change_request.state : 'approved'
end

#change_status_notesObject



50
51
52
# File 'lib/approvable/acts_as_approvable.rb', line 50

def change_status_notes
  current_change_request ? current_change_request.notes : {}
end

#reject_changes(options = {}) ⇒ Object



81
82
83
84
# File 'lib/approvable/acts_as_approvable.rb', line 81

def reject_changes options = {}
  current_change_request.reject! :rejected, options if current_change_request
  reload
end

#requested_changesObject



41
42
43
# File 'lib/approvable/acts_as_approvable.rb', line 41

def requested_changes
  current_change_request ? current_change_request.requested_changes.with_indifferent_access : {}
end

#submit_changesObject



59
60
61
62
63
64
# File 'lib/approvable/acts_as_approvable.rb', line 59

def submit_changes
  transaction do
    current_change_request.submit! if current_change_request
    reload
  end 
end

#unsubmit_changesObject



66
67
68
69
70
71
# File 'lib/approvable/acts_as_approvable.rb', line 66

def unsubmit_changes
  transaction do
    current_change_request.unsubmit! if current_change_request
    reload
  end
end