class Mongoid::History::Attributes::Base
Attributes
trackable[R]
Public Class Methods
new(trackable)
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 7 def initialize(trackable) @trackable = trackable end
Private Instance Methods
aliased_fields()
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 17 def aliased_fields @aliased_fields ||= trackable_class.aliased_fields end
changes()
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 25 def changes trackable.send(changes_method) end
changes_method()
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 21 def changes_method trackable_class.history_trackable_options[:changes_method] end
format_embeds_many_relation(rel, obj)
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 41 def format_embeds_many_relation(rel, obj) rel = trackable_class.database_field_name(rel) relation_class = trackable_class.relation_class_of(rel) permitted_attrs = trackable_class.tracked_embeds_many_attributes(rel) formats = trackable_class.field_format(rel) format_relation(relation_class, obj, permitted_attrs, formats) end
format_embeds_one_relation(rel, obj)
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 33 def format_embeds_one_relation(rel, obj) rel = trackable_class.database_field_name(rel) relation_class = trackable_class.relation_class_of(rel) permitted_attrs = trackable_class.tracked_embeds_one_attributes(rel) formats = trackable_class.field_format(rel) format_relation(relation_class, obj, permitted_attrs, formats) end
format_field(field, value)
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 29 def format_field(field, value) format_value(value, trackable_class.field_format(field)) end
format_relation(relation_class, obj, permitted_attrs, formats)
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 49 def format_relation(relation_class, obj, permitted_attrs, formats) obj.inject({}) do |m, field_value| field = relation_class.database_field_name(field_value.first) next m unless permitted_attrs.include?(field) value = field_value.last value = format_value(field_value.last, formats[field]) if formats.class == Hash m.merge(field => value) end end
format_value(value, format)
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 60 def format_value(value, format) if format.class == String format % value elsif format.respond_to?(:call) format.call(value) else value end end
trackable_class()
click to toggle source
# File lib/mongoid/history/attributes/base.rb, line 13 def trackable_class @trackable_class ||= trackable.class end