module Godmin::Resources::ResourceService::Ordering

Public Instance Methods

apply_order(order_param, resources) click to toggle source
# File lib/godmin/resources/resource_service/ordering.rb, line 7
def apply_order(order_param, resources)
  if order_param.present? && order_column_method?(order_column(order_param))
    send("order_by_#{order_column(order_param)}", resources, order_direction(order_param))
  elsif order_param.present? && order_column_column?(order_column(order_param))
    resources.order("#{resource_class.table_name}.#{order_column(order_param)} #{order_direction(order_param)}")
  else
    resources
  end
end
orderable_column?(column) click to toggle source
# File lib/godmin/resources/resource_service/ordering.rb, line 17
def orderable_column?(column)
  order_column_method?(column) || order_column_column?(column)
end

Protected Instance Methods

order_column(order_param) click to toggle source
# File lib/godmin/resources/resource_service/ordering.rb, line 31
def order_column(order_param)
  order_param.rpartition("_").first
end
order_column_column?(column) click to toggle source
# File lib/godmin/resources/resource_service/ordering.rb, line 27
def order_column_column?(column)
  resource_class.column_names.include?(column)
end
order_column_method?(column) click to toggle source
# File lib/godmin/resources/resource_service/ordering.rb, line 23
def order_column_method?(column)
  respond_to?("order_by_#{column}")
end
order_direction(order_param) click to toggle source
# File lib/godmin/resources/resource_service/ordering.rb, line 35
def order_direction(order_param)
  order_param.rpartition("_").last == "asc" ? "asc" : "desc"
end