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