diff options
author | Rick Olson <technoweenie@gmail.com> | 2006-03-21 01:07:16 +0000 |
---|---|---|
committer | Rick Olson <technoweenie@gmail.com> | 2006-03-21 01:07:16 +0000 |
commit | c8470f8a5b74eefd498397a8effdf37b4dc28674 (patch) | |
tree | 70162f5690e6f0a757fb5b7f9d85e1acb818fd0a /activerecord/test | |
parent | d15550aeccd5c10d7c734c523116e3da9f4b13e8 (diff) | |
download | rails-c8470f8a5b74eefd498397a8effdf37b4dc28674.tar.gz rails-c8470f8a5b74eefd498397a8effdf37b4dc28674.tar.bz2 rails-c8470f8a5b74eefd498397a8effdf37b4dc28674.zip |
add self referential has_many :through example [Rick]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4006 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/associations_join_model_test.rb | 13 | ||||
-rw-r--r-- | activerecord/test/fixtures/author.rb | 10 | ||||
-rw-r--r-- | activerecord/test/fixtures/author_favorites.yml | 4 | ||||
-rw-r--r-- | activerecord/test/fixtures/db_definitions/schema.rb | 4 |
4 files changed, 29 insertions, 2 deletions
diff --git a/activerecord/test/associations_join_model_test.rb b/activerecord/test/associations_join_model_test.rb index ee99d77931..bbe88cfbd5 100644 --- a/activerecord/test/associations_join_model_test.rb +++ b/activerecord/test/associations_join_model_test.rb @@ -9,7 +9,7 @@ require 'fixtures/categorization' class AssociationsJoinModelTest < Test::Unit::TestCase self.use_transactional_fixtures = false - fixtures :posts, :authors, :categories, :categorizations, :comments, :tags, :taggings + fixtures :posts, :authors, :categories, :categorizations, :comments, :tags, :taggings, :author_favorites def test_has_many assert_equal categories(:general), authors(:david).categories.first @@ -294,6 +294,17 @@ class AssociationsJoinModelTest < Test::Unit::TestCase end end + def test_self_referential_has_many_through + assert_equal [authors(:mary)], authors(:david).favorite_authors + assert_equal [], authors(:mary).favorite_authors + end + + def test_add_to_self_referential_has_many_through + new_author = Author.create(:name => "Bob") + authors(:david).author_favorites.create :favorite_author => new_author + assert_equal [new_author, authors(:mary)], authors(:david).reload.favorite_authors + end + private # create dynamic Post models to allow different dependency options def find_post_with_dependency(post_id, association, association_name, dependency) diff --git a/activerecord/test/fixtures/author.rb b/activerecord/test/fixtures/author.rb index e510dd1992..df78a7ada8 100644 --- a/activerecord/test/fixtures/author.rb +++ b/activerecord/test/fixtures/author.rb @@ -25,9 +25,12 @@ class Author < ActiveRecord::Base has_many :categorizations has_many :categories, :through => :categorizations - + has_many :nothings, :through => :kateggorisatons, :class_name => 'Category' + has_many :author_favorites + has_many :favorite_authors, :through => :author_favorites, :order => 'name' + belongs_to :author_address attr_accessor :post_log @@ -60,4 +63,9 @@ end class AuthorAddress < ActiveRecord::Base has_one :author +end + +class AuthorFavorite < ActiveRecord::Base + belongs_to :author + belongs_to :favorite_author, :class_name => "Author", :foreign_key => 'favorite_author_id' end
\ No newline at end of file diff --git a/activerecord/test/fixtures/author_favorites.yml b/activerecord/test/fixtures/author_favorites.yml new file mode 100644 index 0000000000..e81fdac778 --- /dev/null +++ b/activerecord/test/fixtures/author_favorites.yml @@ -0,0 +1,4 @@ +david_mary: + id: 1 + author_id: 1 + favorite_author_id: 2
\ No newline at end of file diff --git a/activerecord/test/fixtures/db_definitions/schema.rb b/activerecord/test/fixtures/db_definitions/schema.rb index 6e8e23a9c4..7d10fbcadf 100644 --- a/activerecord/test/fixtures/db_definitions/schema.rb +++ b/activerecord/test/fixtures/db_definitions/schema.rb @@ -25,4 +25,8 @@ ActiveRecord::Schema.define do t.column :author_address_id, :integer end + create_table :author_favorites, :force => true do |t| + t.column :author_id, :integer + t.column :favorite_author_id, :integer + end end
\ No newline at end of file |