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