Module: MongoidActivityTracker::Tracker::ClassMethods

Defined in:
lib/mongoid_activity_tracker/tracker.rb

Instance Method Summary collapse

Instance Method Details

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



9
10
11
# File 'lib/mongoid_activity_tracker/tracker.rb', line 9

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

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




15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/mongoid_activity_tracker/tracker.rb', line 15

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