class Mongoid::History::Attributes::Create

Public Instance Methods

attributes() click to toggle source
# File lib/mongoid/history/attributes/create.rb, line 5
def attributes
  @attributes = {}
  changes.each do |k, v|
    next unless trackable_class.tracked_field?(k, :create)
    @attributes[k] = format_field(k, v)
  end
  insert_embeds_one_changes
  insert_embeds_many_changes
  @attributes
end

Private Instance Methods

insert_embeds_many_changes() click to toggle source
# File lib/mongoid/history/attributes/create.rb, line 30
def insert_embeds_many_changes
  trackable_class.tracked_embeds_many.each do |rel|
    rel_class = trackable_class.relation_class_of(rel)
    paranoia_field = Mongoid::History.trackable_class_settings(rel_class)[:paranoia_field]
    paranoia_field = rel_class.aliased_fields.key(paranoia_field) || paranoia_field
    rel = aliased_fields.key(rel) || rel
    @attributes[rel] = [nil,
                        trackable.send(rel)
                                 .reject { |obj| obj.respond_to?(paranoia_field) && obj.public_send(paranoia_field).present? }
                                 .map { |obj| format_embeds_many_relation(rel, obj.attributes) }]
  end
end
insert_embeds_one_changes() click to toggle source
# File lib/mongoid/history/attributes/create.rb, line 18
def insert_embeds_one_changes
  trackable_class.tracked_embeds_one.each do |rel|
    rel_class = trackable_class.relation_class_of(rel)
    paranoia_field = Mongoid::History.trackable_class_settings(rel_class)[:paranoia_field]
    paranoia_field = rel_class.aliased_fields.key(paranoia_field) || paranoia_field
    rel = aliased_fields.key(rel) || rel
    obj = trackable.send(rel)
    next if !obj || (obj.respond_to?(paranoia_field) && obj.public_send(paranoia_field).present?)
    @attributes[rel] = [nil, format_embeds_one_relation(rel, obj.attributes)]
  end
end