From 0265c708b9696c3943518ad5f3dabdc22c5eba11 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Wed, 9 Jun 2010 12:33:40 +0100 Subject: Don't overwrite unsaved updates when loading an association but preserve the order of the loaded records. [#4642 state:resolved] Signed-off-by: Pratik Naik --- activerecord/lib/active_record/associations/association_collection.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'activerecord/lib/active_record/associations/association_collection.rb') diff --git a/activerecord/lib/active_record/associations/association_collection.rb b/activerecord/lib/active_record/associations/association_collection.rb index d9903243ce..5b68ca2edb 100644 --- a/activerecord/lib/active_record/associations/association_collection.rb +++ b/activerecord/lib/active_record/associations/association_collection.rb @@ -388,7 +388,7 @@ module ActiveRecord begin if !loaded? if @target.is_a?(Array) && @target.any? - @target = find_target + @target.find_all {|t| t.new_record? } + @target = find_target.map { |f| i = @target.index(f); i ? @target.delete_at(i) : f } + @target else @target = find_target end -- cgit v1.2.3