class Kaminari::Fixer
Public Class Methods
do(input_collection, options = {})
click to toggle source
# File lib/kaminari/models/fixer.rb, line 90 def self.do(input_collection, options = {}) collection = input_collection if collection.is_a?(ThinkingSphinx::Search) collection = do_thinking_sphinx(collection, options) elsif collection.is_a?(ActiveRecord::Relation) && options[:total] collection = do_ar_relation(collection, options) elsif collection.is_a?(Array) collection = do_array(collection, options) end collection end
Protected Class Methods
do_ar_relation(collection, options)
click to toggle source
# File lib/kaminari/models/fixer.rb, line 79 def self.do_ar_relation(collection, options) collection.instance_eval <<-EVAL def total_count #{options[:total]} end EVAL collection end
do_array(collection, options)
click to toggle source
# File lib/kaminari/models/fixer.rb, line 7 def self.do_array(collection, options) Kaminari.paginate_array(collection) collection.instance_eval <<-EVAL def current_page @current_page || 1 end def limit_value per_page end def per_page @per_page || size end def page(value) @current_page = value.to_i.zero? ? 1 : value.to_i self end def per(value) @per_page = value self end def total_count #{options[:total].to_s + ' ||' if options[:total]} size end def num_pages (total_count.to_f / (per_page.zero? ? 1 : per_page)).ceil end def offset (current_page - 1) * per_page end def offset_value offset end def scoped self[offset...offset + per_page] end def all scoped end EVAL collection end
do_thinking_sphinx(collection, options)
click to toggle source
# File lib/kaminari/models/fixer.rb, line 49 def self.do_thinking_sphinx(collection, options) collection.instance_eval <<-EVAL def limit_value per_page end def offset_value offset end def page(value) self end def per(value) self end def total_count total_entries end def scoped self end def num_pages total_pages end def all scoped end EVAL collection end