active_resource_pagination

This gem adds pagination support to Active Resource.

Sample Usage

# Article is a resource model

Article.paginate
Article.paginate(:page => 2, :per_page => 20)
Article.paginate(:page => 2, :per_page => 20, :total_entries => 123)
Article.paginate(:page => 2, :per_page => 20, :params => {:year => 2010})

Configuration

To set default per_page value for all resources. you can do

ActiveResource::Base.per_page = 20    # in config/environment or initializers

or to implement per_page() in your resource class.

Detail

When doing the pagination query, it converts :page and :per_page parameters to :offset and :limit to the actual find method, assure your backend honors :offset and :limit parameters.

Article.paginate(:page => 2, :per_page => 20, :params => {:year => 2010}) # is translated into 2 request calls

Article.find(:all, :params => {:year => 2010, :offset => 40, :limit => 20})
Article.find(:one, :from => :count, :params => {:year => 2010})
  • If you pass in the :total_entries parameter, Model.count() will not be called.

  • You can always override count() if default doesn’t suit your need.

  • If you don’t pass in the :total_entries parameter, Model.count() will be called, unless result count > per_page, then this method automatically sets the count from the result.