module WillPaginate::DataMapper::CollectionMethods
Attributes
current_page[RW]
Public Instance Methods
offset()
click to toggle source
# File lib/will_paginate/data_mapper.rb, line 45 def offset query.offset end
paginated?()
click to toggle source
# File lib/will_paginate/data_mapper.rb, line 37 def paginated? !current_page.nil? end
per_page()
click to toggle source
# File lib/will_paginate/data_mapper.rb, line 41 def per_page query.limit || model.per_page end
to_a()
click to toggle source
Calls superclass method
# File lib/will_paginate/data_mapper.rb, line 65 def to_a if paginated? ::WillPaginate::Collection.create(current_page, per_page) do |col| col.replace super col.total_entries ||= total_entries end else super end end
total_entries()
click to toggle source
# File lib/will_paginate/data_mapper.rb, line 49 def total_entries @total_entries ||= begin if loaded? and @array.size < per_page and (current_page == 1 or @array.size > 0) offset + @array.size else # :reload prevents Collection.filter from being run, which # would cause a stack overflow clean_query = query.merge(:reload => true) # seems like the only way clean_query.instance_variable_set('@limit', nil) clean_query.instance_variable_set('@offset', 0) new_collection(clean_query).count end end end
Private Instance Methods
initialize_copy(original)
click to toggle source
Calls superclass method
# File lib/will_paginate/data_mapper.rb, line 84 def initialize_copy(original) super @total_entries = nil end
new_collection(query, resources = nil)
click to toggle source
Calls superclass method
# File lib/will_paginate/data_mapper.rb, line 78 def new_collection(query, resources = nil) col = super col.current_page = self.current_page col end