Module: Filemaker::Model::Pagination

Included in:
Criteria
Defined in:
lib/filemaker/model/pagination.rb

Instance Method Summary collapse

Instance Method Details

#__pageObject

A simple getter to retrieve the current page value. If no one set it up through the ‘page(4)` way, then at least it defaults to 1.



20
21
22
# File 'lib/filemaker/model/pagination.rb', line 20

def __page
  @_page || 1
end

#__perObject

A simple getter to retrieve the limit value. It will default to Model.per_page

Will have stacklevel too deep if we have ‘per(nil)`. Somehow, the `per_page` must be set either at the `Model.per_page`, `Kaminari.config.default_per_page`, or right here where I just throw a 25 value at it.



31
32
33
34
# File 'lib/filemaker/model/pagination.rb', line 31

def __per
  per(klass.per_page || 25) unless limit?
  options[:max]
end

#page(value) ⇒ Object

Calling ‘page` will trigger pagination.



5
6
7
8
9
10
11
# File 'lib/filemaker/model/pagination.rb', line 5

def page(value)
  value = 1 if value.nil?
  chains << :page
  @_page = positive_page(value.to_i)
  update_skip
  all
end

#per(value) ⇒ Object



13
14
15
16
# File 'lib/filemaker/model/pagination.rb', line 13

def per(value)
  limit(value)
  update_skip
end

#positive_page(page) ⇒ Object



42
43
44
45
# File 'lib/filemaker/model/pagination.rb', line 42

def positive_page(page)
  return 1 if page.nil? || !page.is_a?(Integer)
  page.positive? ? page : 1
end

#update_skipObject



36
37
38
39
40
# File 'lib/filemaker/model/pagination.rb', line 36

def update_skip
  skip = (__page - 1) * __per
  skip(skip) unless skip.zero?
  self
end