columns_for_distinct(columns, orders)
public
PostgreSQL
requires the ORDER BY columns
in the select list for distinct queries, and requires that the ORDER BY
include the distinct column.
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb, line 554
def columns_for_distinct(columns, orders) #:nodoc:
order_columns = orders.reject(&:blank?).map { |s|
# Convert Arel node to string
s = s.to_sql unless s.is_a?(String)
# Remove any ASC/DESC modifiers
s.gsub(/\s+(?:ASC|DESC)\b/, "")
.gsub(/\s+NULLS\s+(?:FIRST|LAST)\b/, "")
}.reject(&:blank?).map.with_index { |column, i| "#{column} AS alias_#{i}" }
(order_columns << super).join(", ")
end