Module: Elastics::ActiveRecord::HelperMethods::ClassMethods
- Defined in:
- lib/elastics/active_record/helper_methods.rb
Instance Method Summary collapse
-
#find_all_ordered(ids, conditions_present = false) ⇒ Object
Finds items by ids and returns array in the order in which ids were given.
-
#index_all_elastics(*args) ⇒ Object
Indexes all records in current scope.
-
#reindex_elastics(options = {}) ⇒ Object
Reindexes records with ‘#index_all_elastics`.
-
#search_elastics(data = {}, options = {}) ⇒ Object
Performs ‘_search` request on type and instantiates result object.
Instance Method Details
#find_all_ordered(ids, conditions_present = false) ⇒ Object
Finds items by ids and returns array in the order in which ids were given. Every missing record is replaced with ‘nil` in the result. If `conditions_present` is `true` it doesn’t add where clause.
25 26 27 28 29 |
# File 'lib/elastics/active_record/helper_methods.rb', line 25 def find_all_ordered(ids, conditions_present = false) relation = conditions_present ? where(id: ids) : self items_by_id = relation.index_by(&:id) ids.map { |i| items_by_id[i] } end |
#index_all_elastics(*args) ⇒ Object
Indexes all records in current scope.
32 33 34 35 36 |
# File 'lib/elastics/active_record/helper_methods.rb', line 32 def index_all_elastics(*args) find_in_batches(*args) do |batch| index_batch_elastics(batch) end end |
#reindex_elastics(options = {}) ⇒ Object
Reindexes records with ‘#index_all_elastics`. If model has scope named `reindex_scope`, this method will apply it.
Also supports ‘:updated_after` option to reindex only updated records. Nothing is performed when `:updated_after` is set but model has not `updated_at` column.
44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/elastics/active_record/helper_methods.rb', line 44 def reindex_elastics( = {}) scope = respond_to?(:reindex_scope) ? reindex_scope : all if after = .delete(:updated_after) if updated_at = arel_table[:updated_at] scope = scope.where(updated_at.gt(after)) else return end end scope.index_all_elastics() end |
#search_elastics(data = {}, options = {}) ⇒ Object
Performs ‘_search` request on type and instantiates result object. SearchResult is a default result class. It can be overriden with :result_class option.
16 17 18 19 20 |
# File 'lib/elastics/active_record/helper_methods.rb', line 16 def search_elastics(data = {}, = {}) [:result_class] ||= SearchResult [:model] = self super end |