touch(*names) public

Saves the record with the updated_at/on attributes set to the current time. Please note that no validation is performed and only the after_touch, after_commit and after_rollback callbacks are executed.

If attribute names are passed, they are 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
product.touch(:started_at, :ended_at) # updates started_at, ended_at and updated_at/on attributes

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

Note that touch must be used on a persisted object, or else an ActiveRecordError will be thrown. For example:

ball = Ball.new
ball.touch(:updated_at)   # => raises ActiveRecordError
Show source
Register or log in to add new notes.