def touch(name = nil)
      attributes = timestamp_attributes_for_update_in_model
      attributes << name if name

      unless attributes.empty?
        current_time = current_time_from_proper_timezone
        changes = {}

        attributes.each do |column|
          changes[column.to_s] = write_attribute(column.to_s, current_time)
        end

        changes[self.class.locking_column] = increment_lock if locking_enabled?

        @changed_attributes.except!(*changes.keys)
        primary_key = self.class.primary_key
        self.class.unscoped.update_all(changes, { primary_key => self[primary_key] }) == 1
      end
    end
def touch(name = nil)
      attributes = timestamp_attributes_for_update_in_model
      attributes << name if name

      unless attributes.empty?
        current_time = current_time_from_proper_timezone
        changes = {}

        attributes.each do |column|
          changes[column.to_s] = write_attribute(column.to_s, current_time)
        end

        changes[self.class.locking_column] = increment_lock if locking_enabled?

        @changed_attributes.except!(*changes.keys)
        primary_key = self.class.primary_key
        self.class.unscoped.update_all(changes, { primary_key => self[primary_key] }) == 1
      end
    end
Saves the record with the updated_at/on attributes set to the current time.
 Please note that no validation is performed and no callbacks are executed.
 If an attribute name is passed, that attribute is updated along with
 updated_at/on attributes.

   product.touch               # updates updated_at/on
   product.touch(:designed_at) # updates the designed_at attribute and updated_at/on

 If used along with +belongs_to+ then +touch+ will invoke +touch+ method on associated object.

   class Brake < ActiveRecord::Base
     belongs_to :car, :touch => true
   end

   class Car < ActiveRecord::Base
     belongs_to :corporation, :touch => true
   end

   # triggers @brake.car.touch and @brake.car.corporation.touch
   @brake.touch