44 lines
759 B
Ruby
44 lines
759 B
Ruby
module PostSets
|
|
module Numbered
|
|
def total_pages
|
|
@total_pages ||= (count / limit.to_f).ceil.to_i
|
|
end
|
|
|
|
def reload
|
|
super
|
|
@total_pages = nil
|
|
end
|
|
|
|
def slice(relation)
|
|
relation.offset(offset).limit(limit).all
|
|
end
|
|
|
|
def pagination_options
|
|
{:offset => offset}
|
|
end
|
|
|
|
def is_first_page?
|
|
offset == 0
|
|
end
|
|
|
|
def validate
|
|
super
|
|
validate_page
|
|
end
|
|
|
|
def validate_page
|
|
if page > 1_000
|
|
raise Error.new("You cannot explicitly specify the page after page 1000")
|
|
end
|
|
end
|
|
|
|
def page
|
|
@page ||= params[:page] ? params[:page].to_i : 1
|
|
end
|
|
|
|
def offset
|
|
((page < 1) ? 0 : (page - 1)) * limit
|
|
end
|
|
end
|
|
end
|