Sha256: 41f32a3f8829ed6866a2beb1dcc84c33e91eba5de1f6ed0dada69e2c603cbc3e
Contents?: true
Size: 796 Bytes
Versions: 102
Compression:
Stored size: 796 Bytes
Contents
# # ActsAsPaginable # # Adds the a `paginate` scope to a model for `limit` and `offset` pagination. # module ActsAsPaginable extend ActiveSupport::Concern module Base def acts_as_paginable(options = nil) include ::ActsAsPaginable end end module ClassMethods def acts_as_paginable?; true; end end included do def self.default_per_page=(per_page) @default_per_page = per_page end def self.default_per_page @default_per_page || 12 # because we often do 3 columns of 4 elements layouts end scope :paginate, -> (page: nil, per_page: nil) { per_page = (per_page || default_per_page).to_i page = (page || 1).to_i offset = [(page - 1), 0].max * (per_page).to_i all.limit(per_page).offset(offset) } end end
Version data entries
102 entries across 102 versions & 1 rubygems