Skip to content

Commit

Permalink
making relationship merge cheaper
Browse files Browse the repository at this point in the history
  • Loading branch information
tenderlove committed Nov 30, 2010
1 parent b6848b6 commit 8998aea
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions activerecord/lib/active_record/relation/spawn_methods.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@
module ActiveRecord
module SpawnMethods
def merge(r)
merged_relation = clone
return merged_relation unless r
return self unless r
return to_a & r if r.is_a?(Array)

merged_relation = clone

Relation::ASSOCIATION_METHODS.each do |method|
value = r.send(:"#{method}_values")

Expand All @@ -24,7 +25,7 @@ def merge(r)
merged_relation.send(:"#{method}_values=", merged_relation.send(:"#{method}_values") + value) if value.present?
end

merged_relation = merged_relation.joins(r.joins_values)
merged_relation.joins_values += r.joins_values

merged_wheres = @where_values + r.where_values

Expand Down

0 comments on commit 8998aea

Please sign in to comment.