Merge pull request #14469 from tiegz/timestamp_inheritance_fix

Swap Timestamp/Callbacks order in ActiveRecord::Base
上级 5cf456a0
* 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 @@ class Base
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 @@ def test_saving_when_instance_record_timestamps_is_false_doesnt_update_its_times
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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册