lib/purgatory/purgatory.rb in purgatory-3.0.0 vs lib/purgatory/purgatory.rb in purgatory-3.1.0

- old
+ new

@@ -42,12 +42,16 @@ attr_accessor_fields.each{|k,v| soul.instance_variable_set(k, v)} if attr_accessor_fields soul end def approve!(approver = nil) - return false if approved? - if soul_with_changes.save - soul.send(performable_method[:method],*performable_method[:args]) if performable_method + return false if approved? + if performable_method.present? + success = soul.send(performable_method[:method], *performable_method[:args]) + else + success = soul_with_changes.save + end + if success self.approver = approver self.approved_at = Time.now self.soul_id = soul.id save return true