8
votes

Comment sauter des validations avec / find_or_create_by?

est-il possible de sauter des validations avec une méthode de recherche / création dynamique par exemple?

Par exemple avec une sauvegarde régulière, je peux faire quelque chose comme: xxx

aimerait Faites la même chose avec wind_or_create_by_title .


0 commentaires

3 Réponses :


14
votes

It Dosnt a l'air possible avec le Code dans les rails maintenant Cependant, vous aurez peut-être plus de chance d'être un peu plus verbeux dans la façon dont vous écrivez le code. Vous pouvez utiliser wind_or_initialize_by _ qui crée un nouvel objet mais ne le sauve pas. Vous pouvez ensuite appeler Enregistrer avec vos options personnalisées, également dans le documentation ils ont un Démonstration soignée difficile à trouver, je vais l'inclure ci-dessous: XXX

Bonne chance et laissez-moi savoir si vous avez besoin de plus de pointeurs dans la bonne direction.


1 commentaires

Merci beaucoup. C'est comme ça que je suis allé! Appréciez que vous preniez le temps de répondre.



6
votes

Pour certains cas, Find_or_initialize_by _ ne sera pas utile et ne doit pas sauter des validations avec Find_or_create_by .

Pour cela, vous pouvez utiliser ci-dessous un flux alternatif et une autre méthode de ROR. :

Mettez à jour votre modèle comme celui-ci: xxx

Vous pouvez l'utiliser maintenant comme ceci:
Post.Où (user_id: self.id) .First_or_create! (Skip_Validation: true)

J'ai utilisé first_or_create au lieu de Find_or_create_by < / code> ici. Vous pouvez transmettre plus de noms et de valeurs de colonnes avec cela, et votre validation ne sera pas exploitée avec cela.

  • Vous pouvez continuer sans modification pour les paramètres puissants et ne pas permettre de permettre à ce "skip_validation" afin qu'il fonctionne avec des validations tout en ajoutant des entrées.

  • en utilisant ceci, vous pouvez l'utiliser avec et sans validations en passant un paramètre.


0 commentaires

1
votes

Sauter actuellement la validation fait strud> fonctionne avec Find_OR_Create_By.

Par exemple, exécutant: p> xxx pré>

saute une validation comme: p >

  validates :name, :email, presence: true, uniqueness: true


0 commentaires