mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Timestamp values should be present on callbacks
This reverts commit dd3ea17191
and add a
regression test.
Fixes #15418
This commit is contained in:
parent
9664661f7b
commit
dddbccb25a
4 changed files with 15 additions and 23 deletions
|
@ -532,10 +532,6 @@
|
|||
|
||||
*Luke Steensen*
|
||||
|
||||
* 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.
|
||||
|
||||
|
|
|
@ -311,8 +311,8 @@ module ActiveRecord #:nodoc:
|
|||
include Locking::Optimistic
|
||||
include Locking::Pessimistic
|
||||
include AttributeMethods
|
||||
include Timestamp
|
||||
include Callbacks
|
||||
include Timestamp
|
||||
include Associations
|
||||
include ActiveModel::SecurePassword
|
||||
include AutosaveAssociation
|
||||
|
|
|
@ -71,24 +71,6 @@ 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)
|
||||
|
@ -399,6 +381,19 @@ class TimestampTest < ActiveRecord::TestCase
|
|||
assert_not_equal time, pet.updated_at
|
||||
end
|
||||
|
||||
def test_timestamp_column_values_are_present_in_the_callbacks
|
||||
klass = Class.new(ActiveRecord::Base) do
|
||||
self.table_name = 'people'
|
||||
|
||||
before_create do
|
||||
self.born_at = self.created_at
|
||||
end
|
||||
end
|
||||
|
||||
person = klass.create first_name: 'David'
|
||||
assert_not_equal person.born_at, nil
|
||||
end
|
||||
|
||||
def test_timestamp_attributes_for_create
|
||||
toy = Toy.first
|
||||
assert_equal [:created_at, :created_on], toy.send(:timestamp_attributes_for_create)
|
||||
|
|
|
@ -529,6 +529,7 @@ ActiveRecord::Schema.define do
|
|||
t.references :best_friend
|
||||
t.references :best_friend_of
|
||||
t.integer :insures, null: false, default: 0
|
||||
t.timestamp :born_at
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue