diff options
author | Brian Samson <brian@briansamson.com> | 2011-11-24 13:11:33 -0700 |
---|---|---|
committer | Brian Samson <brian@briansamson.com> | 2011-11-25 08:24:54 -0700 |
commit | 0f5104d7208b706e9a0353d3d4ccb20683e81bde (patch) | |
tree | afd001da9f2174039014a8a41afc559f139a2e4d /activerecord/test/cases/associations | |
parent | 0cd3bf84068dd2b2d0bbb26062f2cdc7093a1b04 (diff) | |
download | rails-0f5104d7208b706e9a0353d3d4ccb20683e81bde.tar.gz rails-0f5104d7208b706e9a0353d3d4ccb20683e81bde.tar.bz2 rails-0f5104d7208b706e9a0353d3d4ccb20683e81bde.zip |
load has_many associations keyed off a custom primary key if that key is present but the record is unsaved
Diffstat (limited to 'activerecord/test/cases/associations')
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index a60af7c046..88d7d47aea 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -8,6 +8,7 @@ require 'models/reply' require 'models/category' require 'models/post' require 'models/author' +require 'models/essay' require 'models/comment' require 'models/person' require 'models/reader' @@ -61,7 +62,7 @@ end class HasManyAssociationsTest < ActiveRecord::TestCase fixtures :accounts, :categories, :companies, :developers, :projects, :developers_projects, :topics, :authors, :comments, - :people, :posts, :readers, :taggings, :cars + :people, :posts, :readers, :taggings, :cars, :essays def setup Client.destroyed_client_ids.clear @@ -1390,6 +1391,32 @@ class HasManyAssociationsTest < ActiveRecord::TestCase firm.clients.last end end + + def test_custom_primary_key_on_new_record_should_fetch_with_query + author = Author.new(:name => "David") + assert !author.essays.loaded? + + assert_queries 1 do + assert_equal 1, author.essays.size + end + + assert_equal author.essays, Essay.find_all_by_writer_id("David") + + end + + def test_has_many_custom_primary_key + david = authors(:david) + assert_equal david.essays, Essay.find_all_by_writer_id("David") + end + + def test_blank_custom_primary_key_on_new_record_should_not_run_queries + author = Author.new + assert !author.essays.loaded? + + assert_queries 0 do + assert_equal 0, author.essays.size + end + end def test_calling_first_or_last_with_find_options_on_loaded_association_should_fetch_with_query firm = companies(:first_firm) |