From def746030c20697f2c4376515169eeda2f6332b4 Mon Sep 17 00:00:00 2001 From: Rick Olson Date: Thu, 16 Mar 2006 02:46:01 +0000 Subject: Added Base.abstract_class? that marks which classes are not part of the Active Record hierarchy. closes #3704 git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3882 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/test/associations_join_model_test.rb | 10 +++++++++- activerecord/test/base_test.rb | 9 +++++++-- activerecord/test/fixtures/post.rb | 4 ++++ 3 files changed, 20 insertions(+), 3 deletions(-) (limited to 'activerecord/test') diff --git a/activerecord/test/associations_join_model_test.rb b/activerecord/test/associations_join_model_test.rb index 2d74895664..58208ced65 100644 --- a/activerecord/test/associations_join_model_test.rb +++ b/activerecord/test/associations_join_model_test.rb @@ -38,7 +38,15 @@ class AssociationsJoinModelTest < Test::Unit::TestCase def test_polymorphic_has_many_going_through_join_model assert_equal tags(:general), posts(:welcome).tags.first end - + + def test_polymorphic_has_many_create_model_with_inheritance_and_custom_base_class + post = SubStiPost.create :title => 'SubStiPost', :body => 'SubStiPost body' + assert_instance_of SubStiPost, post + + tagging = tags(:misc).taggings.create(:taggable => post) + assert_equal "SubStiPost", tagging.taggable_type + end + def test_polymorphic_has_many_going_through_join_model_with_inheritance assert_equal tags(:general), posts(:thinking).tags.first end diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index d910215a0a..de08118240 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -21,6 +21,7 @@ class TestOracleDefault < ActiveRecord::Base; end class LoosePerson < ActiveRecord::Base attr_protected :credit_rating, :administrator + self.abstract_class = true end class LooseDescendant < LoosePerson @@ -1148,8 +1149,12 @@ class BasicsTest < Test::Unit::TestCase end def test_base_class - assert_equal LoosePerson, LoosePerson.base_class - assert_equal LoosePerson, LooseDescendant.base_class + assert LoosePerson.abstract_class? + assert !LooseDescendant.abstract_class? + assert_equal LoosePerson, LoosePerson.base_class + assert_equal LooseDescendant, LooseDescendant.base_class + assert_equal TightPerson, TightPerson.base_class + assert_equal TightPerson, TightDescendant.base_class end def test_assert_queries diff --git a/activerecord/test/fixtures/post.rb b/activerecord/test/fixtures/post.rb index e5b95aff32..a00fd80671 100644 --- a/activerecord/test/fixtures/post.rb +++ b/activerecord/test/fixtures/post.rb @@ -39,5 +39,9 @@ end class SpecialPost < Post; end; class StiPost < Post + self.abstract_class = true has_one :special_comment, :class_name => "SpecialComment" end + +class SubStiPost < StiPost +end -- cgit v1.2.3