mirror of https://github.com/rails/rails
Merge pull request #51787 from fatkodima/fix-touch_all-with-aliased-attribute-for-update
Fix `ActiveRecord::Relation#touch_all` with custom attribute aliased as attribute for update
This commit is contained in:
commit
36885949a9
|
@ -54,8 +54,10 @@ module ActiveRecord
|
|||
|
||||
module ClassMethods # :nodoc:
|
||||
def touch_attributes_with_time(*names, time: nil)
|
||||
names = names.map(&:to_s)
|
||||
names = names.map { |name| attribute_aliases[name] || name }
|
||||
attribute_names = timestamp_attributes_for_update_in_model
|
||||
attribute_names |= names.map(&:to_s)
|
||||
attribute_names |= names
|
||||
attribute_names.index_with(time || current_time_from_proper_timezone)
|
||||
end
|
||||
|
||||
|
|
|
@ -135,6 +135,19 @@ class UpdateAllTest < ActiveRecord::TestCase
|
|||
assert_not_equal previously_updated_at, developer.updated_at
|
||||
end
|
||||
|
||||
def test_touch_all_with_aliased_for_update_timestamp
|
||||
assert Developer.attribute_aliases.key?("updated_at")
|
||||
|
||||
developer = developers(:david)
|
||||
previously_created_at = developer.created_at
|
||||
previously_updated_at = developer.updated_at
|
||||
Developer.where(name: "David").touch_all(:updated_at)
|
||||
developer.reload
|
||||
|
||||
assert_equal previously_created_at, developer.created_at
|
||||
assert_not_equal previously_updated_at, developer.updated_at
|
||||
end
|
||||
|
||||
def test_touch_all_with_given_time
|
||||
developer = developers(:david)
|
||||
previously_created_at = developer.created_at
|
||||
|
|
Loading…
Reference in New Issue