instance method
touch
Ruby on Rails 7.1.6
Since v3.0.20Signature
touch(*names, time: nil)
Saves the record with the updated_at/on attributes set to the current time or the time specified. Please note that no validation is performed and only the after_touch, after_commit and after_rollback callbacks are executed.
This method can be passed attribute names and an optional time argument. If attribute names are passed, they are updated along with updated_at/on attributes. If no time argument is passed, the current time is used as default.
product.touch # updates updated_at/on with current time product.touch(time: Time.new(2015, 2, 16, 0, 0, 0)) # updates updated_at/on with specified time 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
Parameters
-
namesrest -
timekey = nil
Source
# File activerecord/lib/active_record/persistence.rb, line 1120
def touch(*names, time: nil)
_raise_record_not_touched_error unless persisted?
_raise_readonly_record_error if readonly?
attribute_names = timestamp_attributes_for_update_in_model
attribute_names = (attribute_names | names).map! do |name|
name = name.to_s
name = self.class.attribute_aliases[name] || name
verify_readonly_attribute(name)
name
end
unless attribute_names.empty?
affected_rows = _touch_row(attribute_names, time)
@_trigger_update_callback = affected_rows == 1
else
true
end
end
Defined in activerecord/lib/active_record/persistence.rb line 1120
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Persistence