Rails a plusieurs méthodes pour mettre à jour plusieurs colonnes en même temps, j'ai donc résumé les différences.
assign_attributes
Caractéristiques </ strong>
Exemple </ strong> (si vous avez une table appelée Utilisateur)
user = User.first
user.assign_attributes(family_name: "foo", given_name: "bar")
user.save
#attribute=dans le cas de
user.attributes = { family_name: "foo", given_name: "bar" }
Il n'est pas enregistré, vous devez donc appeler save.
update_attributes
Caractéristiques </ strong>
Exemple d'utilisation </ strong>
user = User.first
user.update_attributes(family_name: "foo", given_name: "bar")
#Pour mise à jour
user.update(family_name: "foo", given_name: "bar")
Il n'est pas nécessaire d'appeler save séparément.
update_attributes!
Caractéristiques </ strong>
Exemple d'utilisation </ strong>
user = User.first
user.update_attributes!(family_name: "foo", given_name: "bar")
#update!dans le cas de
user.update!(family_name: "foo", given_name: "bar")
La manière dont le résultat est renvoyé est différente de update_attributes.
update_columns
Caractéristiques </ strong>
Exemple d'utilisation </ strong>
user = User.first
user.update_columns(family_name: "foo", given_name: "bar")
Veuillez noter qu'il n'y a pas de contrôle de validation ni d'appel de rappel.
référence https://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-update_attributes