mirror of
https://github.com/github/rails.git
synced 2026-01-29 16:28:09 -05:00
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:
@@ -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]
|
||||
|
||||
@@ -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|
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user