提交 fcf8d6e4 编写于 作者: R Rafael Mendonça França

Merge pull request #9443 from exviva/belongs_to_touch_new_record

Fix touching an invalid parent record for belongs_to
## Rails 4.0.0 (unreleased) ##
* Do not try to touch invalid (and thus not persisted) parent record
for a `belongs_to :parent, touch: true` association
*Olek Janiszewski*
* Fix when performing an ordered join query. The bug only
affected queries where the order was given with a symbol.
Fixes #9275.
......@@ -12,7 +17,7 @@
## Rails 4.0.0.beta1 (February 25, 2013) ##
* Fix overriding of attributes by default_scope on `ActiveRecord::Base#dup`.
* Fix overriding of attributes by `default_scope` on `ActiveRecord::Base#dup`.
*Hiroshige UMINO*
......
......@@ -48,7 +48,7 @@ def add_touch_callbacks(reflection)
def belongs_to_touch_after_save_or_destroy_for_#{name}
record = #{name}
unless record.nil?
unless record.nil? || record.new_record?
record.touch #{options[:touch].inspect if options[:touch] != true}
end
end
......
......@@ -113,6 +113,18 @@ def test_destroying_a_record_with_a_belongs_to_that_specifies_touching_the_paren
assert_not_equal previously_owner_updated_at, pet.owner.updated_at
end
def test_saving_a_new_record_belonging_to_invalid_parent_with_touch_should_not_raise_exception
klass = Class.new(Owner) do
def self.name; 'Owner'; end
validate { errors.add(:base, :invalid) }
end
pet = Pet.new(owner: klass.new)
pet.save!
assert pet.owner.new_record?
end
def test_saving_a_record_with_a_belongs_to_that_specifies_touching_a_specific_attribute_the_parent_should_update_that_attribute
klass = Class.new(ActiveRecord::Base) do
def self.name; 'Pet'; end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册