class CursorPaginator::Paginator::ActiveRecord
Public Instance Methods
paginate(scope)
click to toggle source
# File lib/cursor_paginator/paginator/active_record.rb, line 4 def paginate(scope) records = scope.reorder(paginator_options.fetch(:order_key) => order_direction) records = filter_by_cursor(records) if options_parser.filter_required? result = PaginationResult.new(records, self) result end
Private Instance Methods
filter_by_cursor(collection)
click to toggle source
# File lib/cursor_paginator/paginator/active_record.rb, line 14 def filter_by_cursor(collection) arel_table = collection.arel_table order_column = arel_table[paginator_options.fetch(:order_key)] primary_column = arel_table[paginator_options.fetch(:primary_key)] cursor_select = arel_table.project(order_column).where(primary_column.eq(options_parser.cursor)) where_clause = order_column.public_send(query_operator, cursor_select) collection.where(where_clause) end