Associations Pagination Support
module AssociationsPaginationSupport
# Use this as an association extension to get instant pagination support for the
# association. Example:
# class User
# has_many :messages, :extend => AssociationsPaginationSupport
# end
#
# To create a paginator in the the controller you need to do something like thiz:
#
# def messages
# user = User.find(params[:id])
# page_num = params[:page]
# per_page = 7
#
# @messages, total_hits = user.messages.with_pagination(per_page, page_num)
# @paginator = Paginator.new(self, total_hits, per_page, page_num)
# end
#
def with_pagination(per_page, page_num)
page_num = (page_num.to_i.abs.nonzero? || 1)
offset = (page_num-1)*per_page
results = find(:all, :offset => offset, :limit => per_page)
return results, size()
end
end