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