Module: MongoidActivityTracker::Tracker::ClassMethods

Defined in:
lib/mongoid_activity_tracker/tracker.rb

Instance Method Summary collapse

Instance Method Details

#track(_actor, _action, options = {}) ⇒ Object



11
12
13
14
15
# File 'lib/mongoid_activity_tracker/tracker.rb', line 11

def track _actor, _action, options={}
  self.create(
    { action: _action, actor: _actor }.merge(options)
  )
end

#tracks(relation_name, cache_methods: %i(to_s)) ⇒ Object




19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/mongoid_activity_tracker/tracker.rb', line 19

def tracks relation_name, cache_methods: i(to_s)
  belongs_to relation_name, polymorphic: true

  field "#{relation_name}_cache", type: Hash, default: {}

  attr_accessor "#{relation_name}_cache_methods"

  define_method "#{relation_name}_cache_methods" do
    instance_variable_set("@#{relation_name}_cache_methods", cache_methods) unless instance_variable_get("@#{relation_name}_cache_methods")
    instance_variable_get("@#{relation_name}_cache_methods")
  end

  define_method "#{relation_name}_cache_object" do
    OpenStruct.new(send("#{relation_name}_cache"))
  end

  before_save -> { set_cache(relation_name) }
end