Rails/Activerecord veillera à ce que les mises à jour soient mises à jour lorsque c'est vraiment nécessaire et si les attributs ont changed?. Voici un exemple via la console
Cas où l'enregistrement n'est pas modifié. requête de mise à jour ne se fait pas
[9] pry(main)> user = User.last
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT ? [["LIMIT", 1]]
=> #<User:0x007fee16801108 ...>
[10] pry(main)> user.save
(0.1ms) begin transaction #<====== NO UPDATE QUERY IS MADE
(0.0ms) commit transaction
=> true
[11] pry(main)>
cas où enregistrement est modifié. La requête de mise à jour est effectuée
[12] pry(main)> user = User.last
User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT ? [["LIMIT", 1]]
=> #<User:0x007fee12c02558 id: 1,...?
[13] pry(main)> user.name = 'f'
=> "f"
[14] pry(main)> user.save
(0.1ms) begin transaction #<====== UPDATE QUERY IS MADE
SQL (0.3ms) UPDATE "users" SET "name" = ?, "updated_at" = ? WHERE "users"."id" = ? [["name", "f"], ["updated_at", "2017-10-19 06:56:51.385277"], ["id", 1]]
"complete"
(2.2ms) commit transaction
=> true
[15] pry(main)>