Ticket #3692: habtm_create.patch.diff
| File habtm_create.patch.diff, 2.7 kB (added by josh@hasmanythrough.com, 2 years ago) |
|---|
-
activerecord/test/associations_test.rb
old new 1354 1354 devel.save 1355 1355 assert !proj.new_record? 1356 1356 assert_equal devel.projects.last, proj 1357 assert_equal Developer.find(1).projects.last, proj # prove join table is updated 1357 1358 end 1358 1359 1360 def test_build_by_new_record 1361 devel = Developer.new(:name => "Marcel", :salary => 75000) 1362 proj1 = devel.projects.build(:name => "Make bed") 1363 proj2 = devel.projects.build(:name => "Lie in it") 1364 assert_equal devel.projects.last, proj2 1365 assert proj2.new_record? 1366 devel.save 1367 assert !devel.new_record? 1368 assert !proj2.new_record? 1369 assert_equal devel.projects.last, proj2 1370 assert_equal Developer.find_by_name("Marcel").projects.last, proj2 # prove join table is updated 1371 end 1372 1359 1373 def test_create 1360 1374 devel = Developer.find(1) 1361 1375 proj = devel.projects.create("name" => "Projekt") 1362 1376 assert_equal devel.projects.last, proj 1363 1377 assert !proj.new_record? 1378 assert_equal Developer.find(1).projects.last, proj # prove join table is updated 1364 1379 end 1365 1380 1381 def test_create_by_new_record 1382 devel = Developer.new(:name => "Marcel", :salary => 75000) 1383 proj1 = devel.projects.create(:name => "Make bed") 1384 proj2 = devel.projects.create(:name => "Lie in it") 1385 assert_equal devel.projects.last, proj2 1386 assert proj2.new_record? 1387 devel.save 1388 assert !devel.new_record? 1389 assert !proj2.new_record? 1390 assert_equal devel.projects.last, proj2 1391 assert_equal Developer.find_by_name("Marcel").projects.last, proj2 # prove join table is updated 1392 end 1393 1366 1394 def test_uniq_after_the_fact 1367 1395 developers(:jamis).projects << projects(:active_record) 1368 1396 developers(:jamis).projects << projects(:active_record) -
activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb
old new 13 13 record 14 14 end 15 15 16 def create(attributes = {}) 17 # Can't use Base.create since the foreign key may be a protected attribute. 18 if attributes.is_a?(Array) 19 attributes.collect { |attr| create(attr) } 20 else 21 record = build(attributes) 22 insert_record(record) unless @owner.new_record? 23 record 24 end 25 end 26 16 27 def find_first 17 28 load_target.first 18 29 end