Sha256: 10e6ad6494ceb4d86cae16e83d4e5eb4ef1a6ea6f0940426e34aacc5b4a958dc

Contents?: true

Size: 1.82 KB

Versions: 12

Compression:

Stored size: 1.82 KB

Contents

module Effective
  class Log < ActiveRecord::Base
    self.table_name = EffectiveLogging.logs_table_name.to_s

    # These 3 attr_accessors are set on the controller #show actions
    attr_accessor :datatable
    attr_accessor :next_log
    attr_accessor :prev_log

    # Self-Referencing relationship
    belongs_to :parent, class_name: 'Effective::Log', counter_cache: true
    has_many :logs, class_name: 'Effective::Log', foreign_key: :parent_id

    belongs_to :user
    belongs_to :associated, polymorphic: true

    serialize :details, Hash

    # Attributes
    # logs_count          :integer  # Rails Counter Cache

    # associated_type     :string
    # associated_id       :integer
    # associated_to_s     :string
    # message             :string
    # details             :text
    # status              :string
    # timestamps

    validates :message, presence: true
    validates :status, presence: true, inclusion: { in: EffectiveLogging.statuses }

    scope :deep, -> { includes(:user, :associated) }
    scope :sorted, -> { order(:id) }
    scope :logged_changes, -> { where(status: EffectiveLogging.log_changes_status)}
    scope :changes, -> { where(status: EffectiveLogging.log_changes_status)}

    def to_s
      "Log #{id}"
    end

    def message=(msg)
      write_attribute(:message, msg.kind_of?(String) ? msg.to_s[0...255] : msg)
    end

    def log(message, status = EffectiveLogging.statuses.first, options = {})
      EffectiveLogger.log(message, status, (options || {}).merge(parent: self))
    end

    def details
      self[:details] || {}
    end

    # Dynamically add logging methods based on the defined statuses
    # EffectiveLogging.info 'my message'
    (EffectiveLogging.statuses || []).each do |status|
      send(:define_method, status) { |message, options={}| log(message, status, options) }
    end

  end
end


Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
effective_logging-2.1.2 app/models/effective/log.rb
effective_logging-2.1.1 app/models/effective/log.rb
effective_logging-2.1.0 app/models/effective/log.rb
effective_logging-2.0.8 app/models/effective/log.rb
effective_logging-2.0.7 app/models/effective/log.rb
effective_logging-2.0.6 app/models/effective/log.rb
effective_logging-2.0.5 app/models/effective/log.rb
effective_logging-2.0.4 app/models/effective/log.rb
effective_logging-2.0.3 app/models/effective/log.rb
effective_logging-2.0.2 app/models/effective/log.rb
effective_logging-2.0.1 app/models/effective/log.rb
effective_logging-2.0.0 app/models/effective/log.rb