mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Still touch associations when theres no timestamp
Prior to Rails 4.0.4 when touching a object which doesn't have timestamp
attributes (updated_at / updated_on) rails would still touch all
associations. After 73ba2c14cd
it updates
associations but rollsback because `touch` would return nil since
there's no timestamp attribute
This commit is contained in:
parent
b4c96490ee
commit
ea3a73e720
2 changed files with 13 additions and 0 deletions
|
@ -452,6 +452,8 @@ module ActiveRecord
|
|||
changed_attributes.except!(*changes.keys)
|
||||
primary_key = self.class.primary_key
|
||||
self.class.unscoped.where(primary_key => self[primary_key]).update_all(changes) == 1
|
||||
else
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -340,6 +340,17 @@ class BelongsToAssociationsTest < ActiveRecord::TestCase
|
|||
assert_queries(1) { line_item.touch }
|
||||
end
|
||||
|
||||
def test_belongs_to_with_touch_option_on_touch_without_updated_at_attributes
|
||||
assert !LineItem.column_names.include?("updated_at")
|
||||
|
||||
line_item = LineItem.create!
|
||||
invoice = Invoice.create!(line_items: [line_item])
|
||||
initial = invoice.updated_at
|
||||
line_item.touch
|
||||
|
||||
refute_equal initial, invoice.reload.updated_at
|
||||
end
|
||||
|
||||
def test_belongs_to_with_touch_option_on_touch_and_removed_parent
|
||||
line_item = LineItem.create!
|
||||
Invoice.create!(line_items: [line_item])
|
||||
|
|
Loading…
Reference in a new issue