Sha256: 674025975a5496b9b98d5769257d506acc1f549cbe8ff2d85980b09026419722
Contents?: true
Size: 930 Bytes
Versions: 2
Compression:
Stored size: 930 Bytes
Contents
class Purgatory < ActiveRecord::Base attr_accessible :requester, :soul belongs_to :soul, polymorphic: true belongs_to :requester, class_name: 'User' belongs_to :approver, class_name: 'User' before_create :store_changes validates :soul, :requester, presence: true scope :pending, conditions: { approved_at: nil } scope :approved, conditions: ["approved_at IS NOT NULL"] def approved? approved_at.present? end def pending? approved_at.nil? end def changes_hash ActiveSupport::JSON.decode(changes_json) end def approve!(approver) return if approved_at.present? changes = changes_hash if soul.update_attributes(changes.update(changes){|k,v| v.last}, without_protection: true) self.approver = approver self.approved_at = Time.now save end end private def store_changes self.changes_json = ActiveSupport::JSON.encode(soul.changes) end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
purgatory-1.1.0 | lib/purgatory/purgatory.rb |
purgatory-1.0.0 | lib/purgatory/purgatory.rb |