mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #14469 from tiegz/timestamp_inheritance_fix
Swap Timestamp/Callbacks order in ActiveRecord::Base
This commit is contained in:
parent
5cf456a076
commit
dd3ea17191
3 changed files with 23 additions and 1 deletions
|
@ -1,3 +1,7 @@
|
|||
* Make possible to change `record_timestamps` inside Callbacks.
|
||||
|
||||
*Tieg Zaharia*
|
||||
|
||||
* Fixed error where .persisted? throws SystemStackError for an unsaved model with a
|
||||
custom primary key that didn't save due to validation error.
|
||||
|
||||
|
|
|
@ -310,8 +310,8 @@ module ActiveRecord #:nodoc:
|
|||
include Locking::Optimistic
|
||||
include Locking::Pessimistic
|
||||
include AttributeMethods
|
||||
include Callbacks
|
||||
include Timestamp
|
||||
include Callbacks
|
||||
include Associations
|
||||
include ActiveModel::SecurePassword
|
||||
include AutosaveAssociation
|
||||
|
|
|
@ -71,6 +71,24 @@ class TimestampTest < ActiveRecord::TestCase
|
|||
assert_equal @previously_updated_at, @developer.updated_at
|
||||
end
|
||||
|
||||
def test_saving_when_callback_sets_record_timestamps_to_false_doesnt_update_its_timestamp
|
||||
klass = Class.new(Developer) do
|
||||
before_update :cancel_record_timestamps
|
||||
def cancel_record_timestamps
|
||||
self.record_timestamps = false
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
developer = klass.first
|
||||
previously_updated_at = developer.updated_at
|
||||
|
||||
developer.name = "New Name"
|
||||
developer.save!
|
||||
|
||||
assert_equal previously_updated_at, developer.updated_at
|
||||
end
|
||||
|
||||
def test_touching_an_attribute_updates_timestamp
|
||||
previously_created_at = @developer.created_at
|
||||
@developer.touch(:created_at)
|
||||
|
|
Loading…
Reference in a new issue