Class: ActiveSearch::Mongoid::Model
- Inherits:
-
Object
- Object
- ActiveSearch::Mongoid::Model
- Includes:
- Mongoid::Document
- Defined in:
- lib/activesearch/mongoid/model.rb
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.deindex(original) ⇒ Object
55 56 57 |
# File 'lib/activesearch/mongoid/model.rb', line 55 def self.deindex(original) ActiveSearch::Mongoid::Model.where(_original_type: original.class.to_s, _original_id: original.id).destroy end |
.reindex(original, fields, options) ⇒ Object
59 60 61 62 63 64 |
# File 'lib/activesearch/mongoid/model.rb', line 59 def self.reindex(original, fields, ) doc = find_or_initialize_by(_original_type: original.class.to_s, _original_id: original.id) doc.store_fields(original, fields, ) doc.refresh_keywords(original, fields) doc.save end |
Instance Method Details
#refresh_keywords(original, fields) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/activesearch/mongoid/model.rb', line 29 def refresh_keywords(original, fields) self._keywords = fields.select { |f| original.fields[f.to_s] }.inject([]) do |memo,f| if original.fields[f.to_s].localized? memo += original.send("#{f}_translations").map do |locale,translation| next if translation.nil? translation.downcase.split.map { |word| "#{locale}:#{word}"} end.flatten else if original[f] memo += if original[f].is_a?(Array) original[f].map { |value| value.nil? ? nil : value.downcase } else original[f].downcase.split end else memo end end end self._keywords = self._keywords.map! { |k| ActiveSearch.(k) } self._keywords.uniq! end |
#store_fields(original, fields, options) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/activesearch/mongoid/model.rb', line 15 def store_fields(original, fields, ) if && [:store] self._stored = {} [:store].each do |f| if original.fields[f.to_s] && original.fields[f.to_s].localized? self._stored[f] = original.send("#{f}_translations") else self._stored[f] = original.send(f) if original.send(f).present? end end end end |