Résumé des méthodes de mise à jour de plusieurs colonnes [Ruby on Rails]

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>

  • La base de données n'est pas enregistrée.
  • l'alias est des attributs =

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>

  • Enregistré dans DB.
  • l'alias est mise à jour
  • Des contrôles de validation et des appels de rappel sont également effectués.
  • Renvoie si l'enregistrement est vrai ou faux.

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>

  • Si l'enregistrement échoue, une exception se produira.
  • l'alias est mis à jour!

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>

  • La vitesse de mise à jour la plus rapide car elle accède directement à la base de données.
  • Aucun contrôle de validation ou appel de rappel.
  • update_at n'est pas mis à jour.

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

Recommended Posts