From 7056079761eba049bbc6108946a1626fe169dbdf Mon Sep 17 00:00:00 2001 From: Andrew White Date: Fri, 1 Jun 2012 03:03:50 +0100 Subject: Restore behavior of Active Record 3.2.3 scopes A series of commits relating to preloading and scopes caused a regression. Cloning the relation calls initialize_copy which resets a number of instance variables to nil. Without this the scope thinks that it is already loaded when it is called again. Reverts the following commits: 13f1401a6cf0266a3b0a91b173f976db2d4e50f3 8491740ca5361ba9df20e1c8b906c709f5bfbc12 dffbb521a0d00c8673a3ad6e0e8ff526f32daf4e Fixes #6575, #6576 & #6577 --- activerecord/lib/active_record/associations/preloader/association.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'activerecord/lib/active_record/associations') diff --git a/activerecord/lib/active_record/associations/preloader/association.rb b/activerecord/lib/active_record/associations/preloader/association.rb index ab50e43ea0..779f8164cc 100644 --- a/activerecord/lib/active_record/associations/preloader/association.rb +++ b/activerecord/lib/active_record/associations/preloader/association.rb @@ -77,7 +77,7 @@ module ActiveRecord # Some databases impose a limit on the number of ids in a list (in Oracle it's 1000) # Make several smaller queries if necessary or make one query if the adapter supports it sliced = owner_keys.each_slice(model.connection.in_clause_length || owner_keys.size) - records = sliced.map { |slice| records_for(slice).to_a }.flatten + records = sliced.map { |slice| records_for(slice) }.flatten end # Each record may have multiple owners, and vice-versa @@ -93,8 +93,7 @@ module ActiveRecord end def build_scope - scope = klass.unscoped - scope.default_scoped = true + scope = klass.scoped scope = scope.where(process_conditions(options[:conditions])) scope = scope.where(process_conditions(preload_options[:conditions])) -- cgit v1.2.3