Dans mon modèle d'utilisateur, je dispose des éléments habituels tels que l'adresse électronique, le prénom, le nom, le mot de passe, etc.
J'ai plusieurs cas où je dois ignorer tout ou partie des validations.
Actuellement, j'ai une condition d'absence qui ressemble à quelque chose comme :
validates :first_name, presence: :true, etc..., unless: :skip_first_name_validation?
validates :last_name, presence: :true, etc..., unless: :skip_last_name_validation?
validates :email, presence: :true, etc..., unless: :skip_email_validation?
Bien sûr, j'en ai aussi :
attr_accessor :skip_first_name_validation, :skip_last_name_validation, etc.
Et ensuite j'utilise des méthodes privées pour vérifier l'état de chacun :
def skip_first_name_validation?
skip_first_name_validation
end
def skip_last_name_validation?
skip_last_name_validation
end
def skip_email_validation?
skip_email_validation
end
etc..
À partir de là, chaque fois que j'ai besoin de sauter des validations, j'attribue simplement à chacun d'eux une true
dans mon contrôleur.
Bien que tout cela fonctionne bien, je me demande s'il n'y a pas un moyen plus élégant ?
L'idéal serait que je puisse utiliser une condition simple comme celle-ci pour chaque attribut de mes modèles :
:skip_validation?
Et dans mes contrôleurs, faites juste quelque chose comme :
skip_validation(:first_name, :last_name, :password) = true
Quelqu'un peut-il me suggérer une façon de programmer ceci ? Je préférerais ne pas utiliser une gemme/bibliothèque existante, mais j'essaie de comprendre comment programmer ce comportement dans rails. Merci.