module MongoidActivityTracker::Tracker::ClassMethods
Public Instance Methods
track(actor, action, options = {})
click to toggle source
# File lib/mongoid_activity_tracker/tracker.rb, line 9 def track(actor, action, options = {}) create({ action: action, actor: actor }.merge(options)) end
track!(actor, action, options = {})
click to toggle source
# File lib/mongoid_activity_tracker/tracker.rb, line 13 def track!(actor, action, options = {}) create!({ action: action, actor: actor }.merge(options)) end
tracks(relation_name, cache_methods: %i[to_s])
click to toggle source
# File lib/mongoid_activity_tracker/tracker.rb, line 17 def tracks(relation_name, cache_methods: %i[to_s]) field_name = [relation_name, 'cache'].join('_') accessor_name = [relation_name, 'cache_methods'].join('_') instance_variable_name = ['@', accessor_name].join field field_name, type: Hash, default: {} belongs_to relation_name, polymorphic: true, optional: true attr_accessor accessor_name define_method accessor_name do instance_variable_set(instance_variable_name, cache_methods) unless instance_variable_get(instance_variable_name) instance_variable_get(instance_variable_name) end define_method [relation_name, 'cache_object'].join('_') do OpenStruct.new(send(field_name)) end before_validation -> { set_cache(relation_name) } end