Module: Mongoid::Criteria::Scrollable

Defined in:
lib/mongoid/criteria/scrollable.rb

Instance Method Summary collapse

Instance Method Details

#scroll(cursor = nil, &_block) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/mongoid/criteria/scrollable.rb', line 4

def scroll(cursor = nil, &_block)
  raise_multiple_sort_fields_error if multiple_sort_fields?
  criteria = dup
  criteria.merge!(default_sort) if no_sort_option?
  cursor_options = build_cursor_options(criteria)
  cursor = cursor.is_a?(Mongoid::Scroll::Cursor) ? cursor : new_cursor(cursor, cursor_options)
  cursor_criteria = build_cursor_criteria(criteria, cursor)
  if block_given?
    cursor_criteria.order_by(_id: scroll_direction(criteria)).each do |record|
      yield record, cursor_from_record(record, cursor_options)
    end
  else
    cursor_criteria
  end
end