lib/active_admin/order_clause.rb in activeadmin-1.0.0.pre4 vs lib/active_admin/order_clause.rb in activeadmin-1.0.0.pre5

- old
+ new

@@ -1,26 +1,48 @@ module ActiveAdmin class OrderClause - attr_reader :field, :order + attr_reader :field, :order, :active_admin_config - def initialize(clause) + 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 def valid? @field.present? && @order.present? end - def to_sql(active_admin_config) - table = active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil - table_column = (@column =~ /\./) ? @column : - [table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".") + def apply(chain) + chain.reorder(sql) + end + def to_sql [table_column, @op, ' ', @order].compact.join end + + def table + active_admin_config.resource_column_names.include?(@column) ? active_admin_config.resource_table_name : nil + end + + def table_column + (@column =~ /\./) ? @column : + [table, active_admin_config.resource_quoted_column_name(@column)].compact.join(".") + end + + def sql + custom_sql || to_sql + end + + protected + + def custom_sql + if active_admin_config.ordering[@column].present? + active_admin_config.ordering[@column].call(self) + end + end + end end