Sha256: d6bd5e470d822ea597a3f75e8171991d5de7c27b4a442dfdf241133f8390ff0a

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

module Mongoid
  module History
    module Attributes
      class Destroy < ::Mongoid::History::Attributes::Base
        def attributes
          @attributes = {}
          trackable.attributes.each { |k, v| @attributes[k] = [v, nil] if trackable_class.tracked_field?(k, :destroy) }
          insert_embeds_one_changes
          insert_embeds_many_changes
          @attributes
        end

        private

        def insert_embeds_one_changes
          trackable_class.tracked_embeds_one
            .map { |rel| aliased_fields.key(rel) || rel }
            .each do |rel|
              permitted_attrs = trackable_class.tracked_embeds_one_attributes(rel)
              obj = trackable.send(rel)
              @attributes[rel] = [obj.attributes.slice(*permitted_attrs), nil] if obj
            end
        end

        def insert_embeds_many_changes
          trackable_class.tracked_embeds_many
            .map { |rel| aliased_fields.key(rel) || rel }
            .each do |rel|
              permitted_attrs = trackable_class.tracked_embeds_many_attributes(rel)
              @attributes[rel] = [trackable.send(rel).map { |obj| obj.attributes.slice(*permitted_attrs) }, nil]
            end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongoid-history-0.6.0 lib/mongoid/history/attributes/destroy.rb