module Croods::Controller::Collection

Protected Instance Methods

collection() click to toggle source
# File lib/croods/controller/collection.rb, line 60
def collection
  list = resource.apply_filters(policy_scope(model), params)
  list = search_collection(list) unless resource.skip_search?
  list = sort(list)
  list = paginate_collection(list) if page_param.present?

  list
end
order() click to toggle source
# File lib/croods/controller/collection.rb, line 34
def order
  params[:order].presence
end
order_by() click to toggle source
# File lib/croods/controller/collection.rb, line 30
def order_by
  params[:order_by].presence
end
page_param() click to toggle source
# File lib/croods/controller/collection.rb, line 8
def page_param
  params[resource.page_attribute_name]
end
paginate_collection(list) click to toggle source
# File lib/croods/controller/collection.rb, line 16
def paginate_collection(list)
  paginate(list.send(resource.page_method_name, page_param))
end
search_collection(list) click to toggle source
# File lib/croods/controller/collection.rb, line 20
def search_collection(list)
  return list unless search_param.present?

  if resource.search_block.present?
    list.instance_exec(search_param, &resource.search_block)
  else
    list.public_send resource.search_method_name, search_param
  end
end
search_param() click to toggle source
# File lib/croods/controller/collection.rb, line 12
def search_param
  params[resource.search_attribute_name]
end
sort(list) click to toggle source

rubocop:enable Metrics/AbcSize

# File lib/croods/controller/collection.rb, line 52
def sort(list)
  if resource.sort_by_method?
    sort_by_method(list)
  else
    list.order(resource.sort_by)
  end
end
sort_by_method(list) click to toggle source

rubocop:disable Metrics/AbcSize

# File lib/croods/controller/collection.rb, line 39
def sort_by_method(list)
  if order_by && order
    list.public_send(resource.sort_by, order_by, order)
  elsif order_by
    list.public_send(resource.sort_by, order_by)
  elsif order
    list.public_send(resource.sort_by, order)
  else
    list.public_send(resource.sort_by)
  end
end