aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2007-03-13 05:23:18 +0000
committerRick Olson <technoweenie@gmail.com>2007-03-13 05:23:18 +0000
commite3dab67c44ed047cc91ccfcc17c5ee2bb9997be3 (patch)
tree5acc906178f850d70706a24c5ca47a3acdd43097 /activerecord/test
parent2823a56f14edac7e9012484d375f23c89405d725 (diff)
downloadrails-e3dab67c44ed047cc91ccfcc17c5ee2bb9997be3.tar.gz
rails-e3dab67c44ed047cc91ccfcc17c5ee2bb9997be3.tar.bz2
rails-e3dab67c44ed047cc91ccfcc17c5ee2bb9997be3.zip
Allow a polymorphic :source for has_many :through associations. Closes #7143 [protocool]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6408 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/associations/join_model_test.rb12
-rw-r--r--activerecord/test/fixtures/tag.rb2
2 files changed, 14 insertions, 0 deletions
diff --git a/activerecord/test/associations/join_model_test.rb b/activerecord/test/associations/join_model_test.rb
index 1d2a4f6c5c..a5e525c670 100644
--- a/activerecord/test/associations/join_model_test.rb
+++ b/activerecord/test/associations/join_model_test.rb
@@ -300,6 +300,18 @@ class AssociationsJoinModelTest < Test::Unit::TestCase
assert_equal [posts(:welcome), posts(:thinking)], tags(:general).taggings.find(:all, :include => :taggable)
end
end
+
+ def test_has_many_polymorphic_with_source_type
+ assert_equal [posts(:welcome), posts(:thinking)], tags(:general).tagged_posts
+ end
+
+ def test_eager_has_many_polymorphic_with_source_type
+ tag_with_include = Tag.find(tags(:general).id, :include => :tagged_posts)
+ desired = [posts(:welcome), posts(:thinking)]
+ assert_no_queries do
+ assert_equal desired, tag_with_include.tagged_posts
+ end
+ end
def test_has_many_through_has_many_find_all
assert_equal comments(:greetings), authors(:david).comments.find(:all, :order => 'comments.id').first
diff --git a/activerecord/test/fixtures/tag.rb b/activerecord/test/fixtures/tag.rb
index c12ec0c188..a581b381e8 100644
--- a/activerecord/test/fixtures/tag.rb
+++ b/activerecord/test/fixtures/tag.rb
@@ -2,4 +2,6 @@ class Tag < ActiveRecord::Base
has_many :taggings
has_many :taggables, :through => :taggings
has_one :tagging
+
+ has_many :tagged_posts, :through => :taggings, :source => :taggable, :source_type => 'Post'
end \ No newline at end of file