Module: CompositePrimaryKeys::ActiveRecord::QueryMethods

Defined in:
lib/composite_primary_keys/relation/query_methods.rb

Instance Method Summary collapse

Instance Method Details

#reverse_sql_order(order_query) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/composite_primary_keys/relation/query_methods.rb', line 3

def reverse_sql_order(order_query)
  # CPK
  # order_query = ["#{quoted_table_name}.#{quoted_primary_key} ASC"] if order_query.empty?

  # break apart CPKs 
  order_query = primary_key.map do |key|
    "#{quoted_table_name}.#{connection.quote_column_name(key)} ASC"
  end if order_query.empty?

  order_query.map do |o|
    case o
    when Arel::Nodes::Ordering
      o.reverse
    when String, Symbol
      o.to_s.split(',').collect do |s|
        s.strip!
        s.gsub!(/\sasc\Z/i, ' DESC') || s.gsub!(/\sdesc\Z/i, ' ASC') || s.concat(' DESC')
      end
    else
      o
    end
  end.flatten
end