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
|