lib/purgatory/purgatory.rb in purgatory-2.1.0 vs lib/purgatory/purgatory.rb in purgatory-2.2.0

- old
+ new

@@ -4,10 +4,12 @@ belongs_to :approver, class_name: 'User' before_create :store_changes validates :soul_type, presence: true + serialize :requested_changes + def self.pending where(approved_at: nil) end def self.approved @@ -20,21 +22,17 @@ def pending? approved_at.nil? end - def changes_hash - ActiveSupport::JSON.decode(changes_json) - end - def soul @soul ||= (super || soul_type.constantize.new) end def approve!(approver = nil) return false if approved? - changes_hash.each{|k,v| soul.send "#{k}=", v[1]} + requested_changes.each{|k,v| soul.send "#{k}=", v[1]} if soul.save self.approver = approver self.approved_at = Time.now save return true @@ -43,8 +41,8 @@ end private def store_changes - self.changes_json = ActiveSupport::JSON.encode(soul.changes) + self.requested_changes = soul.changes end end