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 585
def columns_for_distinct(columns, orders) # :nodoc:
order_columns = orders.compact_blank.map { |s|
# Convert Arel node to string
s = visitor.compile(s) unless s.is_a?(String)
# Remove any ASC/DESC modifiers
s.gsub(/\s+(?:ASC|DESC)\b/, "")
.gsub(/\s+NULLS\s+(?:FIRST|LAST)\b/, "")
}.compact_blank.map.with_index { |column, i| "#{column} AS alias_#{i}" }
(order_columns << super).join(", ")
end