Module: ElasticRecord::Callbacks

Defined in:
lib/elastic_record/callbacks.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/elastic_record/callbacks.rb', line 3

def self.included(base)
  base.class_eval do
    after_save if: :changed? do
      self.class.elastic_index.index_record self
    end

    after_destroy do
      self.class.elastic_index.delete_document id
    end
  end
end

Instance Method Details

#as_searchObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/elastic_record/callbacks.rb', line 16

def as_search
  json = {}

  elastic_index.mapping[:properties].each do |field, mapping|
    next if !respond_to?(field)
    value = send(field)

    if value.present? || value == false
      json[field] = case mapping[:type]
        when :object
          value.as_search
        when :nested
          value.map(&:as_search)
        else
          value
        end
    end
  end

  amend_as_search(json) if respond_to?(:amend_as_search)

  json
end