On destroying do not touch destroyed belongs to association.
Fixes: #13445
This commit is contained in:
parent
00fc64a6dc
commit
2bcf7158d3
@ -1,3 +1,16 @@
|
||||
* Do not raise `'can not touch on a new record object'` exception on destroying already destroyed
|
||||
`belongs_to` association with `touch: true` option
|
||||
|
||||
Fixes: #13445
|
||||
|
||||
Example:
|
||||
|
||||
# Given Comment has belongs_to :post, touch: true
|
||||
comment.post.destroy
|
||||
comment.destroy # no longer raises an error
|
||||
|
||||
*Paul Nikitochkin*
|
||||
|
||||
* Fix a bug when assigning an array containing string numbers to a
|
||||
PostgreSQL integer array column.
|
||||
|
||||
|
@ -112,7 +112,7 @@ def self.touch_record(o, foreign_key, name, touch) # :nodoc:
|
||||
end
|
||||
|
||||
record = o.send name
|
||||
unless record.nil? || record.new_record?
|
||||
if record && record.persisted?
|
||||
if touch != true
|
||||
record.touch touch
|
||||
else
|
||||
|
@ -356,6 +356,14 @@ def test_belongs_to_with_touch_option_on_destroy
|
||||
assert_queries(2) { line_item.destroy }
|
||||
end
|
||||
|
||||
def test_belongs_to_with_touch_option_on_destroy_with_destroyed_parent
|
||||
line_item = LineItem.create!
|
||||
invoice = Invoice.create!(line_items: [line_item])
|
||||
invoice.destroy
|
||||
|
||||
assert_queries(1) { line_item.destroy }
|
||||
end
|
||||
|
||||
def test_belongs_to_with_touch_option_on_touch_and_reassigned_parent
|
||||
line_item = LineItem.create!
|
||||
Invoice.create!(line_items: [line_item])
|
||||
|
Loading…
Reference in New Issue
Block a user