In Rails 4.x, when we save an ActiveRecord
object then Rails automatically updates fields updated_at
or updated_on
.
>> user = User.new(name: 'John', email: 'john@example.com')
>> user.save
=> true
>> user.updated_at
=> Wed, 16 Mar 2016 09:12:44 UTC +00:00
>> user.name = "Mark"
>> user.save
=> true
>> user.updated_at
=> Wed, 16 Mar 2016 09:15:30 UTC +00:00
Addition of touch option in ActiveRecord::Base#save
In Rails 5, by passing touch: false
as an option to save
, we can update the object without updating timestamps. The default option for touch
is true
.
>> user.updated_at
=> Wed, 16 Mar 2016 09:15:30 UTC +00:00
>> user.name = "Dan"
>> user.save(touch: false)
=> true
>> user.updated_at
=> Wed, 16 Mar 2016 09:15:30 UTC +00:00
This works only when we are updating a record and does not work when a record is created.
>> user = User.new(name: 'Tom', email: 'tom@example.com')
>> user.save(touch: false)
>> user.updated_at
=> Mon, 21 Mar 2016 07:04:04 UTC +00:00
Posted by Alexander M to Ruby and RoR knowledge base (2016-06-06 13:06)