method
distinct_relation_for_primary_key
rails latest stable - Class:
ActiveRecord::ConnectionAdapters::SchemaStatements
distinct_relation_for_primary_key(relation)public
No documentation available.
# File activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb, line 1389
def distinct_relation_for_primary_key(relation) # :nodoc:
primary_key_columns = Array(relation.primary_key).map do |column|
visitor.compile(relation.table[column])
end
values = columns_for_distinct(
primary_key_columns,
relation.order_values
)
limited = relation.reselect(values).distinct!
limited_ids = select_rows(limited.arel, "SQL").map do |results|
results.last(Array(relation.primary_key).length) # ignores order values for MySQL and PostgreSQL
end
if limited_ids.empty?
relation.none!
else
relation.where!(**Array(relation.primary_key).zip(limited_ids.transpose).to_h)
end
relation.limit_value = relation.offset_value = nil
relation
end