class CrossOrigin::Collection::View

Attributes

model[R]

Public Class Methods

new(collection, selector, options, model) click to toggle source
Calls superclass method
# File lib/cross_origin/collection.rb, line 20
def initialize(collection, selector, options, model)
  super(collection, selector, options)
  @model = model
end

Public Instance Methods

count(options = {}) click to toggle source
Calls superclass method
# File lib/cross_origin/collection.rb, line 32
def count(options = {})
  super + (options[:super] ? 0 : cross_views.inject(0) { |count, view| count + view.count })
end
cross_views() click to toggle source
# File lib/cross_origin/collection.rb, line 36
def cross_views
  views = []
  skip, limit = self.skip, self.limit
  opts = options
  previous_view = self
  count = 0
  CrossOrigin.configurations.each do |config|
    if skip || limit
      opts = opts.dup
      current_count = previous_view.count(super: true)
      if skip
        opts[:skip] = skip =
          if current_count < skip
            skip - current_count
          else
            count += current_count - skip
            0
          end
      end
      if limit
        opts[:limit] = limit =
          if count > limit
            0
          else
            limit - count
          end
      end
    end
    views << (previous_view = config.collection_for(model).find(selector, opts).modifiers(modifiers))
  end
  views
end
each(&block) click to toggle source
Calls superclass method
# File lib/cross_origin/collection.rb, line 25
def each(&block)
  if block
    super(&block)
    cross_views.each { |view| view.each(&block) }
  end
end
new(options) click to toggle source
# File lib/cross_origin/collection.rb, line 69
def new(options)
  View.new(collection, selector, options, model)
end