From 33b4cc7acb65f03a46bf002a7c613f3c33cdeb8d Mon Sep 17 00:00:00 2001 From: Ken Collins Date: Wed, 7 Jul 2010 14:36:01 -0400 Subject: [PATCH] Fix the #using_limitable_reflections? helper to work correctly by not examining the length of an array which contains false/true, hence always passing. --- activerecord/lib/active_record/associations.rb | 2 +- activerecord/test/cases/associations_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index fcc79b5..3a32581 100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -1782,7 +1782,7 @@ module ActiveRecord end def using_limitable_reflections?(reflections) - reflections.collect(&:collection?).length.zero? + reflections.none?(&:collection?) end def column_aliases(join_dependency) diff --git a/activerecord/test/cases/associations_test.rb b/activerecord/test/cases/associations_test.rb index 68a0b52..048d042 100644 --- a/activerecord/test/cases/associations_test.rb +++ b/activerecord/test/cases/associations_test.rb @@ -74,6 +74,16 @@ class AssociationsTest < ActiveRecord::TestCase assert_queries(1) { assert_not_nil firm.clients(true).each {} } end end + + def test_using_limitable_reflections_helper + using_limitable_reflections = lambda { |reflections| ActiveRecord::Base.send :using_limitable_reflections?, reflections } + belongs_to_reflections = [Tagging.reflect_on_association(:tag), Tagging.reflect_on_association(:super_tag)] + has_many_reflections = [Tag.reflect_on_association(:taggings), Developer.reflect_on_association(:projects)] + mixed_reflections = (belongs_to_reflections + has_many_reflections).uniq + assert using_limitable_reflections.call(belongs_to_reflections), "Belong to associations are limitable" + assert !using_limitable_reflections.call(has_many_reflections), "All has many style associations are not limitable" + assert !using_limitable_reflections.call(mixed_reflections), "No collection associations (has many style) should pass" + end def test_storing_in_pstore require "tmpdir" -- 1.6.4.2