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

- old
+ new

@@ -9,10 +9,11 @@ validates :soul_type, presence: true serialize :requested_changes serialize :attr_accessor_fields + serialize :performable_method def self.pending where(approved_at: nil) end @@ -35,17 +36,18 @@ def sti_class requested_changes['type'].try(:last) end def soul_with_changes - requested_changes.each{|k,v| soul.send(:write_attribute, k, v[1])} - attr_accessor_fields.each{|k,v| soul.instance_variable_set(k, v)} + requested_changes.each{|k,v| soul.send(:write_attribute, k, v[1])} if requested_changes + 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 self.approver = approver self.approved_at = Time.now self.soul_id = soul.id save return true