class Ansr::Relation
Constants
- DEFAULT_PAGE_SIZE
Attributes
context[RW]
count[RW]
filters[RW]
resource[RW]
response[R]
total_count[RW]
Public Class Methods
new(klass, table, values = {})
click to toggle source
Calls superclass method
# File lib/ansr/relation.rb, line 15 def initialize(klass, table, values = {}) raise "Cannot search nil model" if klass.nil? super(klass, table, values) end
Public Instance Methods
default_limit_value()
click to toggle source
# File lib/ansr/relation.rb, line 26 def default_limit_value DEFAULT_PAGE_SIZE end
docs_from(response)
click to toggle source
override to parse docs from response
# File lib/ansr/relation.rb, line 79 def docs_from(response) [] end
empty?()
click to toggle source
# File lib/ansr/relation.rb, line 47 def empty? count == 0 end
filters_from(response)
click to toggle source
override to parse filters from response
# File lib/ansr/relation.rb, line 74 def filters_from(response) {} and raise "this is a dead method!" end
group_by(key=self.group_values.first)
click to toggle source
# File lib/ansr/relation.rb, line 105 def group_by(key=self.group_values.first) [] end
grouped?()
click to toggle source
# File lib/ansr/relation.rb, line 101 def grouped? false end
load()
click to toggle source
# File lib/ansr/relation.rb, line 30 def load exec_queries unless loaded? self end
many?()
click to toggle source
# File lib/ansr/relation.rb, line 51 def many? count > 1 end
max_pages()
click to toggle source
# File lib/ansr/relation.rb, line 69 def max_pages (total_count.to_f / limit_value).ceil end
offset!(value)
click to toggle source
# File lib/ansr/relation.rb, line 55 def offset!(value) self.offset_value=value self end
reload()
click to toggle source
Forces reloading of relation.
# File lib/ansr/relation.rb, line 42 def reload reset load end
spawn()
click to toggle source
# File lib/ansr/relation.rb, line 95 def spawn s = self.class.new(@klass, @table, @values.dup) s.references!(references_values()) s end
to_a()
click to toggle source
Converts relation objects to Array.
# File lib/ansr/relation.rb, line 36 def to_a load @records end
Private Instance Methods
build_select(arel, selects)
click to toggle source
override to prevent default selection of all fields
# File lib/ansr/relation.rb, line 112 def build_select(arel, selects) unless selects.empty? @implicit_readonly = false arel.project(*selects) #else # arel.project(@klass.arel_table[Arel.star]) end end
exec_queries()
click to toggle source
# File lib/ansr/relation.rb, line 122 def exec_queries default_scoped = with_default_scope if default_scoped.equal?(self) @response = model.find_by_nosql(arel, bind_values) @records = docs_from(@response).collect do |d| model.new(d) end # this is ceremonial, it's always true readonly = readonly_value.nil? || readonly_value @records.each { |record| record.readonly! } if readonly else @records = default_scoped.to_a end self.limit_value = default_limit_value unless self.limit_value self.offset_value = 0 unless self.offset_value @filter_cache = nil # unload any cached filters @loaded = true @records end