Remove duplicated logic.

This commit is contained in:
José Valim
2010-08-02 17:20:17 +02:00
parent 009aa8825b
commit 9effe3cc18

View File

@@ -1805,9 +1805,7 @@ module ActiveRecord
case associations
when Symbol, String
reflection = base.reflections[associations]
if reflection && reflection.collection?
records.each { |record| record.send(reflection.name).target.uniq! }
end
remove_uniq_by_reflection(reflection, records)
when Array
associations.each do |association|
remove_duplicate_results!(base, records, association)
@@ -1815,10 +1813,7 @@ module ActiveRecord
when Hash
associations.keys.each do |name|
reflection = base.reflections[name]
if records.any? && reflection.options && reflection.options[:uniq]
records.each { |record| record.send(reflection.name).target.uniq! }
end
remove_uniq_by_reflection(reflection, records)
parent_records = []
records.each do |record|
@@ -1837,6 +1832,7 @@ module ActiveRecord
end
protected
def build(associations, parent = nil, join_class = Arel::InnerJoin)
parent ||= @joins.last
case associations
@@ -1859,6 +1855,12 @@ module ActiveRecord
end
end
def remove_uniq_by_reflection(reflection, records)
if reflection && reflection.collection?
records.each { |record| record.send(reflection.name).target.uniq! }
end
end
def build_join_association(reflection, parent)
JoinAssociation.new(reflection, self, parent)
end