class Lolita::Adapter::CommonHelper::PaginationBuilder
Public Class Methods
new(adapter,page,per,options)
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 25 def initialize adapter,page,per,options @adapter = adapter @page = page @per = per @options = options || {} end
Public Instance Methods
ability_criteria()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 50 def ability_criteria @ability_criteria ||= if @adapter.klass.respond_to?(:accessible_by) @adapter.klass.accessible_by(current_ability) elsif current_ability.respond_to?(:scope) current_ability.scope else nil end end
create_page()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 82 def create_page page_criteria = ability_criteria ? relation.merge(ability_criteria) : relation page_criteria = if nested_criteria page_criteria.merge(nested_criteria) elsif custom_criteria custom_criteria.merge(page_criteria) else page_criteria end unless page_criteria.respond_to?(:current_page) page_criteria = page_criteria.send(@adapter.order_method, sorting).page(@page).per(@per) end page_criteria end
current_ability()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 97 def current_ability controller = request && request.headers["action_controller.instance"] if controller && controller.respond_to?(:current_ability) controller.current_ability end end
custom_criteria()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 68 def custom_criteria @custom_criteria ||= if @options[:pagination_method] pagination_scope_for_klass(@options[:pagination_method], @page, @per, @options) else nil end end
nested_criteria()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 40 def nested_criteria nested_hsh = params[:nested] @nested_criteria ||= if params[:nested] && !params[:nested][:association] nested_hsh = nested_hsh.reject{|k,v| [:parent,:path].include?(k.to_sym)} @adapter.klass.where(nested_hsh) else nil end end
pagination_scope_for_klass(method_name, page, per, options)
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 76 def pagination_scope_for_klass(method_name, page, per, options) if @adapter.klass.respond_to?(method_name) @adapter.klass.send(method_name,page,per,options) end end
params()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 32 def params request.respond_to?(:params) && request.params || {} end
relation()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 60 def relation if params[:nested] && params[:nested][:association] @adapter.find(hsh[:nested][:id]).send(hsh[:nested][:association]) else @adapter.klass.unscoped end end
request()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 36 def request @options[:request] end
sorting()
click to toggle source
# File lib/lolita/adapter/common_helper.rb, line 104 def sorting params[:s] ? params[:s].gsub(',',' ').gsub('|',',') : nil end