2017-10-19 5 views
0

J'ai une validation personnalisée sur le modèle, elle me permet de vérifier l'unicité de 1 champ mais liée à un autre modèle, quelque chose comme (1,2,3,4,5) -> User1, (1,2,3,4 , 5) -> User2, donc parce qu'une valeur peut réellement exister pour 2 utilisateurs différents mais pas 2 fois pour les mêmes utilisateurs, j'ai dû utiliser un validateur personnalisé! Voici mon code:Comment passer la validation à la mise à jour?

def codigoDuplicado? 
    @invinveacCommit = Invinveac.where(codproveedor: codproveedor, ndocumento: ndocumento).first 
    if @invinveacCommit != nil 
     errors.add(:ndocumento, "Ya existe un movimiento con el mismo codigo para el proveedor seleccionado.") 
    end 
end 

Mon problème est, il tente de valider même pour la méthode de mise à jour où j'ai besoin de valider ce code, est-il possible de sauter cette validation pour une action de mise à jour?

Répondre

1

Vous pouvez utiliser le mot-clé :on lors de la mise en place de la validation

Donc, dans votre modèle, je suppose que vous avez quelque chose comme:

validate :codigoDuplicado? 

Vous pouvez faire ce

validate :codigoDuplicado?, on: :create 
+0

Oui, Je fais, génial! Je vais l'essayer maintenant! – AlexQuezada

+0

Ty, ça a marché! Bonne réponse! – AlexQuezada