module Moar::Controller

Public Instance Methods

moar(relation) click to toggle source

Paginates relation, returning an ActiveRecord::Relation with an offset and limit applied. The offset and limit are calculated based on pagination increments (as specified by either {Moar::Controller::ClassMethods#moar_increments} or {Moar::Config#increments}), and the current page number (parsed from the request query param specified by {Moar::Config#page_param}).

If the current page number is less than or equal to the number of pagination increments, the limit will be the pagination increment corresponding to the current page number. Otherwise, the limit will be the sum of all increments. For example, if the pagination increments are +[15,20,25]+, the offsets and limits are:

  • page 1: offset 0, limit 15

  • page 2: offset 15, limit 20

  • page 3: offset 35, limit 25

  • page 4: offset 60, limit 60

  • page 5: offset 120, limit 60

  • page 6: offset 180, limit 60

@param relation [ActiveRecord::Relation] @return [ActiveRecord::Relation]

# File lib/moar/controller.rb, line 29
def moar(relation)
  @moar = Moar::Context.new(
    _moar_increments || Moar.config.increments,
    params[Moar.config.page_param].to_i,
    params[Moar.config.accumulation_param].present?
  )

  relation.offset(@moar.offset).limit(@moar.limit)
end