module MongoidActivityTracker::Tracker

Attributes

actor_cache_methods[RW]

Public Class Methods

included(base) click to toggle source
# File lib/mongoid_activity_tracker/tracker.rb, line 41
def self.included(base)
  base.extend ClassMethods
  base.class_eval do
    include Mongoid::Document

    field :action, type: Symbol

    tracks :actor

    validates :actor, presence: true, unless: -> { actor_cache && actor_cache[:to_s].present? }
    validates :action, presence: true
  end
end

Public Instance Methods

created_at() click to toggle source
# File lib/mongoid_activity_tracker/tracker.rb, line 55
def created_at
  id.generation_time.in_time_zone(Time.zone)
end

Private Instance Methods

set_cache(relation_name) click to toggle source
# File lib/mongoid_activity_tracker/tracker.rb, line 61
def set_cache(relation_name)
  accessor_name = [relation_name, 'cache_methods'].join('_')
  field_name = [relation_name, 'cache'].join('_')

  return unless send(accessor_name).present?
  return unless send(relation_name).present?

  send(accessor_name).each do |m|
    next if send(field_name)[m].present?

    send(field_name)[m] = send(relation_name).send(m) if send(relation_name).respond_to?(m)
  end
end