class ActiveAdmin::OrderClause

Attributes

active_admin_config[R]
field[R]
order[R]

Public Class Methods

new(active_admin_config, clause) click to toggle source
# File lib/active_admin/order_clause.rb, line 6
def initialize(active_admin_config, clause)
  clause =~ /^([\w\.]+)(->'\w+')?_(desc|asc)$/
  @column = $1
  @op = $2
  @order = $3
  @active_admin_config = active_admin_config
  @field = [@column, @op].compact.join
end

Public Instance Methods

apply(chain) click to toggle source
# File lib/active_admin/order_clause.rb, line 19
def apply(chain)
  chain.reorder(Arel.sql sql)
end
sql() click to toggle source
# File lib/active_admin/order_clause.rb, line 36
def sql
  custom_sql || to_sql
end
table() click to toggle source
# File lib/active_admin/order_clause.rb, line 27
def table
  active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil
end
table_column() click to toggle source
# File lib/active_admin/order_clause.rb, line 31
def table_column
  (@column =~ /\./) ? @column :
    [table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".")
end
to_sql() click to toggle source
# File lib/active_admin/order_clause.rb, line 23
def to_sql
  [table_column, @op, " ", @order].compact.join
end
valid?() click to toggle source
# File lib/active_admin/order_clause.rb, line 15
def valid?
  @field.present? && @order.present?
end

Protected Instance Methods

custom_sql() click to toggle source
# File lib/active_admin/order_clause.rb, line 42
def custom_sql
  if active_admin_config.ordering[@column].present?
    active_admin_config.ordering[@column].call(self)
  end
end