Module: KaminariCache::ClassMethods
- Defined in:
- lib/kaminari-cache.rb
Instance Method Summary collapse
Instance Method Details
#apply_sort(scope, order) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/kaminari-cache.rb', line 62 def apply_sort(scope, order) case order.class when Symbol scope.order! order when String scope.order! order when Hash order.each do |k, v| scope.order! "#{k.to_s} #{v.to_s}" end end scope end |
#cache_key(options) ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/kaminari-cache.rb', line 54 def cache_key() key = [:kaminari, self.name.downcase] key << [:page] key << [:per] key << ["order", [:order]] if [:order] key end |
#fetch_page(options = {}) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/kaminari-cache.rb', line 34 def fetch_page( = {}) # Default options .reverse_merge!( :page => 1, :per => Kaminari.config.max_per_page || Kaminari.config.default_per_page ) entries = Rails.cache.fetch(cache_key()) do scope = self.page([:page]).per([:per]) scope = apply_sort(scope, [:order]) struct = OpenStruct.new( :entries => scope.entries, :all => scope.entries, :current_page => scope.current_page, :total_pages => scope.total_pages, :per_page => scope.limit_value ) end end |