From 55b6fa9370dbdac23b0df2bbcb70b2e2d604b410 Mon Sep 17 00:00:00 2001 From: tnp Date: Fri, 24 Sep 2010 10:35:35 -0700 Subject: restore behavior of touch for models without :updated_xx [#5439 state:resolved] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: José Valim --- activerecord/lib/active_record/persistence.rb | 5 ++--- activerecord/test/cases/timestamp_test.rb | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'activerecord') diff --git a/activerecord/lib/active_record/persistence.rb b/activerecord/lib/active_record/persistence.rb index f80e304c5d..707c1a05be 100644 --- a/activerecord/lib/active_record/persistence.rb +++ b/activerecord/lib/active_record/persistence.rb @@ -222,9 +222,8 @@ module ActiveRecord # @brake.touch def touch(name = nil) attributes = timestamp_attributes_for_update_in_model - unless attributes.blank? - attributes << name if name - + attributes << name if name + unless attributes.empty? current_time = current_time_from_proper_timezone changes = {} diff --git a/activerecord/test/cases/timestamp_test.rb b/activerecord/test/cases/timestamp_test.rb index db7accfc40..eb93761fb2 100644 --- a/activerecord/test/cases/timestamp_test.rb +++ b/activerecord/test/cases/timestamp_test.rb @@ -4,14 +4,14 @@ require 'models/owner' require 'models/pet' require 'models/toy' require 'models/car' +require 'models/task' class TimestampTest < ActiveRecord::TestCase - fixtures :developers, :owners, :pets, :toys, :cars + fixtures :developers, :owners, :pets, :toys, :cars, :tasks def setup @developer = Developer.first @previously_updated_at = @developer.updated_at - @car = Car.first end def test_saving_a_changed_record_updates_its_timestamp @@ -50,7 +50,7 @@ class TimestampTest < ActiveRecord::TestCase Developer.record_timestamps = true end - def test_touching_a_different_attribute + def test_touching_an_attribute_updates_timestamp previously_created_at = @developer.created_at @developer.touch(:created_at) @@ -60,8 +60,16 @@ class TimestampTest < ActiveRecord::TestCase assert_not_equal @previously_updated_at, @developer.updated_at end - def test_touch_a_record_without_timestamps - assert_nothing_raised { @car.touch } + def test_touching_an_attribute_updates_it + task = Task.first + previous_value = task.ending + task.touch(:ending) + assert_not_equal previous_value, task.ending + assert_in_delta Time.now, task.ending, 1 + end + + def test_touching_a_record_without_timestamps_is_unexceptional + assert_nothing_raised { Car.first.touch } end def test_saving_a_record_with_a_belongs_to_that_specifies_touching_the_parent_should_update_the_parent_updated_at -- cgit v1.2.3