Make sure that << works on has_many associations on unsaved records. Closes #9989 [hasmanyjosh]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8049 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Michael Koziarski
2007-10-28 03:39:18 +00:00
parent d44ce1cb73
commit df0765d8dc
3 changed files with 10 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
*SVN*
* Make sure that << works on has_many associations on unsaved records. Closes #9989 [hasmanyjosh]
* Allow association redefinition in subclasses. #9346 [wildchild]
* Fix has_many :through delete with custom foreign keys. #6466 [naffis]

View File

@@ -17,6 +17,7 @@ module ActiveRecord
# Since << flattens its argument list and inserts each record, +push+ and +concat+ behave identically.
def <<(*records)
result = true
load_target if @owner.new_record?
@owner.transaction do
flatten_deeper(records).each do |record|

View File

@@ -103,6 +103,13 @@ class AssociationProxyTest < Test::Unit::TestCase
assert david.categories.include?(categories(:technology))
end
def test_push_does_not_lose_additions_to_new_record
josh = Author.new(:name => "Josh")
josh.posts << Post.new(:title => "New on Edge", :body => "More cool stuff!")
assert josh.posts.loaded?
assert_equal 1, josh.posts.size
end
def test_save_on_parent_does_not_load_target
david = developers(:david)