aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2006-05-29 03:48:17 +0000
committerRick Olson <technoweenie@gmail.com>2006-05-29 03:48:17 +0000
commit06075a9eb5ddf255ed561bc4cdddef214d7c63aa (patch)
tree229caa32d0b9815e8f58d8b39d6cee1cfa1a1d00 /activerecord/test
parent8498c74a99d4db42060dcf4be1d8270c755a5bdc (diff)
downloadrails-06075a9eb5ddf255ed561bc4cdddef214d7c63aa.tar.gz
rails-06075a9eb5ddf255ed561bc4cdddef214d7c63aa.tar.bz2
rails-06075a9eb5ddf255ed561bc4cdddef214d7c63aa.zip
Fix the has_and_belongs_to_many #create doesn't populate the join for new records. Closes #3692 [josh@hasmanythrough.com]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4379 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rwxr-xr-xactiverecord/test/associations_test.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/activerecord/test/associations_test.rb b/activerecord/test/associations_test.rb
index 3667f71238..c7092bb1f9 100755
--- a/activerecord/test/associations_test.rb
+++ b/activerecord/test/associations_test.rb
@@ -1354,6 +1354,20 @@ class HasAndBelongsToManyAssociationsTest < Test::Unit::TestCase
devel.save
assert !proj.new_record?
assert_equal devel.projects.last, proj
+ assert_equal Developer.find(1).projects.last, proj # prove join table is updated
+ end
+
+ def test_build_by_new_record
+ devel = Developer.new(:name => "Marcel", :salary => 75000)
+ proj1 = devel.projects.build(:name => "Make bed")
+ proj2 = devel.projects.build(:name => "Lie in it")
+ assert_equal devel.projects.last, proj2
+ assert proj2.new_record?
+ devel.save
+ assert !devel.new_record?
+ assert !proj2.new_record?
+ assert_equal devel.projects.last, proj2
+ assert_equal Developer.find_by_name("Marcel").projects.last, proj2 # prove join table is updated
end
def test_create
@@ -1361,6 +1375,20 @@ class HasAndBelongsToManyAssociationsTest < Test::Unit::TestCase
proj = devel.projects.create("name" => "Projekt")
assert_equal devel.projects.last, proj
assert !proj.new_record?
+ assert_equal Developer.find(1).projects.last, proj # prove join table is updated
+ end
+
+ def test_create_by_new_record
+ devel = Developer.new(:name => "Marcel", :salary => 75000)
+ proj1 = devel.projects.create(:name => "Make bed")
+ proj2 = devel.projects.create(:name => "Lie in it")
+ assert_equal devel.projects.last, proj2
+ assert proj2.new_record?
+ devel.save
+ assert !devel.new_record?
+ assert !proj2.new_record?
+ assert_equal devel.projects.last, proj2
+ assert_equal Developer.find_by_name("Marcel").projects.last, proj2 # prove join table is updated
end
def test_uniq_after_the_fact