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
|