class Elasticsearch::Persistence::Relation
Constants
- INVALID_METHODS_FOR_DELETE_ALL
- MULTI_VALUE_METHODS
- SINGLE_VALUE_METHODS
- VALUE_METHODS
Attributes
klass[R]
loaded[R]
loaded?[R]
model[R]
Public Class Methods
new(klass, values={})
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 20 def initialize(klass, values={}) @klass = klass @values = values @offsets = {} @loaded = false end
Public Instance Methods
as_json(options = nil)
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 37 def as_json(options = nil) to_a.as_json(options) end
build(*args)
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 27 def build(*args) @klass.new *args end
create(*args, &block)
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 45 def create(*args, &block) scoping { @klass.create!(*args, &block) } end
delete(opts=nil)
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 63 def delete(opts=nil) end
exec_queries()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 66 def exec_queries # Run safety callback klass.circuit_breaker_callbacks.each do |cb| current_scope_values = self.send("#{cb[:options][:in]}_values") next if skip_callbacks_values.include? cb[:name] valid = if cb[:callback].nil? current_scope_values.collect(&:keys).flatten.include? cb[:name] else cb[:callback].call(current_scope_values.collect(&:keys).flatten, current_scope_values) end raise Elasticsearch::Persistence::Model::QueryOptionMissing, "#{cb[:name]} #{cb[:options][:message]}" unless valid end @records = @klass.fetch_results(query_builder) @loaded = true @records end
inspect()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 90 def inspect entries = to_a.results.take([size_value.to_i + 1, 11].compact.min).map!(&:inspect) message = {} message = {total: to_a.total, max: to_a.total} message.merge!(aggregations: results.aggregations.keys) unless results.aggregations.nil? message = message.each_pair.collect { |k,v| "#{k}: #{v}" } message.unshift entries.join(', ') unless entries.size.zero? "#<#{self.class.name} #{message.join(', ')}>" end
load()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 56 def load exec_queries unless loaded? self end
Also aliased as: fetch
scoping() { || ... }
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 49 def scoping previous, klass.current_scope = klass.current_scope, self yield ensure klass.current_scope = previous end
to_a()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 31 def to_a load @records end
Also aliased as: results
to_elastic()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 41 def to_elastic query_builder.to_elastic end
values()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 86 def values Hash[@values] end
Private Instance Methods
query_builder()
click to toggle source
# File lib/elasticsearch/persistence/relation.rb, line 104 def query_builder QueryBuilder.new(values) end