module Kaminari::PaginatableWithoutCount
A module that makes AR::Relation paginatable without having to cast another SELECT COUNT query
Public Instance Methods
last_page?()
click to toggle source
The page wouldn't be the last page if there's “limit + 1” record
# File lib/kaminari/activerecord/active_record_relation_methods.rb, line 78 def last_page? !out_of_range? && !@_has_next end
load()
click to toggle source
Overwrite AR::Relation#load to actually load one more record to judge if the page has next page then store the result in @_has_next ivar
Calls superclass method
# File lib/kaminari/activerecord/active_record_relation_methods.rb, line 55 def load if loaded? || limit_value.nil? super else @values[:limit] = limit_value + 1 # FIXME: this could be removed when we're dropping AR 4 support @arel.limit = @values[:limit] if @arel && (Integer === @arel.limit) super @values[:limit] = limit_value - 1 # FIXME: this could be removed when we're dropping AR 4 support @arel.limit = @values[:limit] if @arel && (Integer === @arel.limit) if @records.any? @records = @records.dup if (frozen = @records.frozen?) @_has_next = !!@records.delete_at(limit_value) @records.freeze if frozen end self end end
out_of_range?()
click to toggle source
Empty relation needs no pagination
# File lib/kaminari/activerecord/active_record_relation_methods.rb, line 83 def out_of_range? load unless loaded? @records.empty? end
total_count()
click to toggle source
Force to raise an exception if total_count is called explicitly.
# File lib/kaminari/activerecord/active_record_relation_methods.rb, line 89 def total_count raise "This scope is marked as a non-count paginable scope and can't be used in combination " "with `#paginate' or `#page_entries_info'. Use #link_to_next_page or #link_to_previous_page instead." end