diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2012-04-18 19:27:04 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2012-04-18 19:27:04 -0700 |
commit | 1166d49f62ccab789be208112163ad13183224e2 (patch) | |
tree | 1ccdc4cda401e9fab970999324307e66082ea688 /activerecord | |
parent | 39861395ffeaed6a164da5011f427f4184626b49 (diff) | |
download | rails-1166d49f62ccab789be208112163ad13183224e2.tar.gz rails-1166d49f62ccab789be208112163ad13183224e2.tar.bz2 rails-1166d49f62ccab789be208112163ad13183224e2.zip |
Revert "Fix #5667. Preloading should ignore scoping."
Causes a subtle regression where record.reload includes the default
scope. Hard to reproduce in isolation. Seems like the relation is
getting infected by some previous usage.
This reverts commit dffbb521a0d00c8673a3ad6e0e8ff526f32daf4e.
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG.md | 6 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/preloader/association.rb | 5 | ||||
-rw-r--r-- | activerecord/test/cases/associations/eager_test.rb | 11 |
3 files changed, 2 insertions, 20 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index ffd74893be..16c525d211 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,9 +1,3 @@ -## Rails 3.2.4 (unreleased) ## - -* Association preloading shouldn't be affected by the current scoping. - This could cause infinite recursion and potentially other problems. - See GH #5667. *Jon Leighton* - ## Rails 3.2.3 (unreleased) ## * Added find_or_create_by_{attribute}! dynamic method. *Andrew White* 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])) diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb index 28bf1c60e5..1dc71ac4cc 100644 --- a/activerecord/test/cases/associations/eager_test.rb +++ b/activerecord/test/cases/associations/eager_test.rb @@ -1095,15 +1095,4 @@ class EagerAssociationTest < ActiveRecord::TestCase Post.includes(:comments).order(nil).where(:comments => {:body => "Thank you for the welcome"}).first end end - - test "scoping with a circular preload" do - assert_equal Comment.find(1), Comment.preload(:post => :comments).scoping { Comment.find(1) } - end - - test "preload ignores the scoping" do - assert_equal( - Comment.find(1).post, - Post.where('1 = 0').scoping { Comment.preload(:post).find(1).post } - ) - end end |