module Elasticsearch::Model::Extensions::PartialUpdating

Public Class Methods

included(klass) click to toggle source
# File lib/elasticsearch/model/extensions/partial_updating.rb, line 7
def self.included(klass)
  klass.extend ClassMethods

  klass.instance_variable_set :@__partial_updater__, PartialUpdater.new(klass)
end

Public Instance Methods

as_indexed_json(options={}) click to toggle source
# File lib/elasticsearch/model/extensions/partial_updating.rb, line 13
def as_indexed_json(options={})
  as_json(options.merge(self.class.__partial_updater__.as_json_options))
end
partially_update_document(*changed_attributes) click to toggle source
# File lib/elasticsearch/model/extensions/partial_updating.rb, line 17
def partially_update_document(*changed_attributes)
  if changed_attributes.empty?
    __elasticsearch__.index_document
  else
    partial_updater = self.class.__partial_updater__

    partial_document = partial_updater.build_partial_document_for_update_with_error_logging(
      record: self,
      changed_attributes: changed_attributes
    )

    if partial_document
      partial_updater.update_document(id: self.id, doc: partial_document)
    end
  end

  true
end