web-dev-qa-db-fra.com

Différence entre save (false) et save (: validate => false)

Quelle est la différence entre save(false) et save(:validate => false)? D'après ce que je peux dire, la fonctionnalité est la même. La version qui utilise :validate Est dans l'API, ce qui m'amène à croire que save(false) est une version obsolète? Cela m'est venu en suivant ceci: https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user . Le guide contient save(false) mais je recevais des erreurs lors de son utilisation. Je suis passé à la version :validate Et cela a bien fonctionné.

28
Steve

Dans Rails versions antérieures à 3, saveétait une méthode dans ActiveRecord::Base et vous pourriez lui passer false afin de contourner les validations.

Dans Rails 3, savea été déplacé vers ActiveRecord::Persistance et depuis lors, vous devriez passer :validate => false à save pour contourner les validations.

37
Behrang

Toutes les validations à partir du modèle sont ignorées lorsque nous utilisons validate: false

@user = User.new(....)

@user.save(validate: false)

Base d'action désactiver la validation

http://www.dan-manges.com/blog/action-dependent-validations-and-why-on-update-is-bad

Ignorer la validation de champ

https://richonrails.com/articles/skipping-validations-in-Ruby-on-Rails

Exemple

classe User <ActiveRecord :: Base

validates_presence_of: mot de passe,: on =>: mise à jour

fin

27
Jigar Bhatt