class BaseCRM::PaginatedResource
Attributes
current_page[R]
Public Class Methods
new(service, *args)
click to toggle source
# File lib/basecrm/paginated_resource.rb, line 7 def initialize(service, *args) raise TypeError unless service.respond_to?(:where) @service = service @args = args @options = args.last.kind_of?(Hash) ? args.pop : {} end
Public Instance Methods
each(&block)
click to toggle source
# File lib/basecrm/paginated_resource.rb, line 15 def each(&block) return to_enum(:each) unless block_given? current_page = 1 per_page = 25 search_options = @options.merge(page: current_page, per_page: per_page) until (resources = @service.where(*@args, search_options)).empty? resources.each(&block) current_page += 1 search_options[:page] = current_page end self end