aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorDiego Algorta <diego@oboxodo.com>2010-05-15 12:33:18 -0300
committerPratik Naik <pratiknaik@gmail.com>2010-05-15 16:53:59 +0100
commit3436fdfc12d58925e3d981e0afa61084ea34736c (patch)
tree72638ace2cd5c272a066c80c1ddaee094821dfba /activerecord
parent2d84f24af5cb0854a316929fa0d0720773be2162 (diff)
downloadrails-3436fdfc12d58925e3d981e0afa61084ea34736c.tar.gz
rails-3436fdfc12d58925e3d981e0afa61084ea34736c.tar.bz2
rails-3436fdfc12d58925e3d981e0afa61084ea34736c.zip
Fix for get_ids when including a belongs_to association on a has_many association [#2896 state:resolved]
Signed-off-by: Pratik Naik <pratiknaik@gmail.com>
Diffstat (limited to 'activerecord')
-rwxr-xr-xactiverecord/lib/active_record/associations.rb2
-rw-r--r--activerecord/test/cases/associations/has_many_associations_test.rb4
-rw-r--r--activerecord/test/models/post.rb1
3 files changed, 6 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb
index 0a3c7c6a60..634d4a181a 100755
--- a/activerecord/lib/active_record/associations.rb
+++ b/activerecord/lib/active_record/associations.rb
@@ -1398,7 +1398,7 @@ module ActiveRecord
primary_key = reflection.source_reflection.primary_key_name
send(through.name).select("DISTINCT #{through.quoted_table_name}.#{primary_key}").map!(&:"#{primary_key}")
else
- send(reflection.name).select("#{reflection.quoted_table_name}.#{reflection.klass.primary_key}").map!(&:id)
+ send(reflection.name).select("#{reflection.quoted_table_name}.#{reflection.klass.primary_key}").except(:includes).map!(&:id)
end
end
end
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb
index b55b08bf9d..6e47967696 100644
--- a/activerecord/test/cases/associations/has_many_associations_test.rb
+++ b/activerecord/test/cases/associations/has_many_associations_test.rb
@@ -900,6 +900,10 @@ class HasManyAssociationsTest < ActiveRecord::TestCase
assert !company.clients.loaded?
end
+ def test_get_ids_ignores_include_option
+ assert_equal [readers(:michael_welcome).id], posts(:welcome).readers_with_person_ids
+ end
+
def test_get_ids_for_unloaded_finder_sql_associations_loads_them
company = companies(:first_firm)
assert !company.clients_using_sql.loaded?
diff --git a/activerecord/test/models/post.rb b/activerecord/test/models/post.rb
index d092c4bf09..dd06822cfd 100644
--- a/activerecord/test/models/post.rb
+++ b/activerecord/test/models/post.rb
@@ -69,6 +69,7 @@ class Post < ActiveRecord::Base
has_many :authors, :through => :categorizations
has_many :readers
+ has_many :readers_with_person, :include => :person, :class_name => "Reader"
has_many :people, :through => :readers
has_many :people_with_callbacks, :source=>:person, :through => :readers,
:before_add => lambda {|owner, reader| log(:added, :before, reader.first_name) },