Module: Pravangi::Model
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/pravangi/requires_approval.rb
Instance Method Summary collapse
- #approve_pending_changes ⇒ Object
- #pending_approval? ⇒ Boolean
- #pravangi_object_changes ⇒ Object
- #reject_pending_changes ⇒ Object
- #track_approval ⇒ Object
Instance Method Details
#approve_pending_changes ⇒ Object
61 62 63 64 65 |
# File 'lib/pravangi/requires_approval.rb', line 61 def approve_pending_changes self.pending_approvals.each(&:approve_changes) self.touch self.reload end |
#pending_approval? ⇒ Boolean
57 58 59 |
# File 'lib/pravangi/requires_approval.rb', line 57 def pending_approval? pending_approvals.present? end |
#pravangi_object_changes ⇒ Object
36 37 38 |
# File 'lib/pravangi/requires_approval.rb', line 36 def pravangi_object_changes self.changes.except(*self.class.[:skip_attributes]) end |
#reject_pending_changes ⇒ Object
67 68 69 70 71 |
# File 'lib/pravangi/requires_approval.rb', line 67 def reject_pending_changes self.pending_approvals.each(&:reject_changes) self.touch self.reload end |
#track_approval ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/pravangi/requires_approval.rb', line 40 def track_approval warn('Pravangi: The record cannot be updated, because it requires approval.') if changed? original = self.clone original.pending_approvals.build( object_changes: original.pravangi_object_changes, raw_object: original.to_yaml ).save self.reload skip_attributes = Array(self.class.[:skip_attributes]) skip_attributes.each do |attr| self[attr] = original[attr] end end end |