Module: ActiveHouse::Querying::Page
- Extended by:
- ActiveSupport::Concern
- Included in:
- ActiveHouse::QueryBuilder
- Defined in:
- lib/active_house/querying/page.rb
Instance Method Summary collapse
- #initial_values ⇒ Object
- #page(page_number) ⇒ Object
- #page!(page_number) ⇒ Object
- #per(page_size) ⇒ Object
Instance Method Details
#initial_values ⇒ Object
6 7 8 |
# File 'lib/active_house/querying/page.rb', line 6 def initial_values super.merge page_number: nil end |
#page(page_number) ⇒ Object
10 11 12 |
# File 'lib/active_house/querying/page.rb', line 10 def page(page_number) dup.page!(page_number) end |
#page!(page_number) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/active_house/querying/page.rb', line 14 def page!(page_number) page_number ||= 1 raise ArgumentError, 'page_number must be >= 1' if page_number < 1 values[:page_number] = page_number self end |
#per(page_size) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_house/querying/page.rb', line 22 def per(page_size) page_number = values[:page_number] || 1 raise ArgumentError, 'page_number must be >= 1' if page_number < 1 raise ArgumentError, 'page_size must be >= 0' if page_size < 0 offset = (page_number - 1) * page_size records = limit(page_size, offset).to_a total_count = count Kaminari.paginate_array(records, total_count: total_count).page(page_number).per(page_size) end |