aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2012-04-18 19:27:04 -0700
committerJeremy Kemper <jeremy@bitsweat.net>2012-04-18 19:27:04 -0700
commit1166d49f62ccab789be208112163ad13183224e2 (patch)
tree1ccdc4cda401e9fab970999324307e66082ea688 /activerecord
parent39861395ffeaed6a164da5011f427f4184626b49 (diff)
downloadrails-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.md6
-rw-r--r--activerecord/lib/active_record/associations/preloader/association.rb5
-rw-r--r--activerecord/test/cases/associations/eager_test.rb11
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