提交 cfbd790a 编写于 作者: J Jeremy Kemper

Fix regression where the association would not construct new finder SQL on...

Fix regression where the association would not construct new finder SQL on save causing bogus queries for "WHERE owner_id = NULL" even after owner was saved. Closes #8713.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7942 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
上级 88935283
*SVN*
* Fix regression where the association would not construct new finder SQL on save causing bogus queries for "WHERE owner_id = NULL" even after owner was saved. #8713 [Bryan Helmkamp]
* Refactor association create and build so before & after callbacks behave consistently. #8854 [lifofifo, mortent]
* Quote table names. Defaults to column quoting. #4593 [Justin Lynn, gwcoffey, eadz, Dmitry V. Sabanin, Jeremy Kemper]
......
......@@ -1083,10 +1083,10 @@ def add_multiple_associated_save_callbacks(association_name)
[]
end
if !records_to_save.blank?
records_to_save.each { |record| association.send(:insert_record, record) }
association.send(:construct_sql) # reconstruct the SQL queries now that we know the owner's id
end
records_to_save.each { |record| association.send(:insert_record, record) } unless records_to_save.blank?
# reconstruct the SQL queries now that we know the owner's id
association.send(:construct_sql) if association.respond_to?(:construct_sql)
end_eval
# Doesn't use after_save as that would save associations added in after_create/after_update twice
......
......@@ -14,6 +14,8 @@
require 'fixtures/comment'
require 'fixtures/tag'
require 'fixtures/tagging'
require 'fixtures/person'
require 'fixtures/reader'
class AssociationsTest < Test::Unit::TestCase
fixtures :accounts, :companies, :developers, :projects, :developers_projects,
......@@ -24,6 +26,14 @@ def test_bad_collection_keys
Class.new(ActiveRecord::Base).has_many(:wheels, :name => 'wheels')
end
end
def test_should_construct_new_finder_sql_after_create
person = Person.new
assert_equal [], person.readers.find(:all)
person.save!
reader = Reader.create! :person => person, :post => Post.new(:title => "foo", :body => "bar")
assert_equal [reader], person.readers.find(:all)
end
def test_force_reload
firm = Firm.new("name" => "A New Firm, Inc")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册