From 7c1f73c843310a3dd0cee179f56ffdc7c859eaa0 Mon Sep 17 00:00:00 2001 From: Dmitriy Kiriyenko Date: Mon, 6 Jun 2011 10:30:05 +0300 Subject: [PATCH] Do not use default_scope in ActiveRecord::Persistence#touch. --- activerecord/lib/active_record/persistence.rb | 2 +- activerecord/test/cases/timestamp_test.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index 4ec0431b8c..367a1be4d9 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -279,7 +279,7 @@ def touch(name = nil) @changed_attributes.except!(*changes.keys) primary_key = self.class.primary_key - self.class.update_all(changes, { primary_key => self[primary_key] }) == 1 + self.class.unscoped.update_all(changes, { primary_key => self[primary_key] }) == 1 end end diff --git a/activerecord/test/cases/timestamp_test.rb b/activerecord/test/cases/timestamp_test.rb index ceb1452afd..c0f1b5895e 100644 --- a/activerecord/test/cases/timestamp_test.rb +++ b/activerecord/test/cases/timestamp_test.rb @@ -40,6 +40,15 @@ def test_touching_a_record_updates_its_timestamp assert_equal previous_salary, @developer.salary end + def test_touching_a_record_with_default_scope_that_exludes_it_updates_its_timestamp + developer = @developer.becomes(DeveloperCalledJamis) + + developer.touch + assert_not_equal @previously_updated_at, developer.updated_at + developer.reload + assert_not_equal @previously_updated_at, developer.updated_at + end + def test_saving_when_record_timestamps_is_false_doesnt_update_its_timestamp Developer.record_timestamps = false @developer.name = "John Smith" -- GitLab