ArgumentError: Vous devez fournir au moins une validation avec :si
J'ai un modèle simple
class Task < ActiveRecord::Base
validates :deadline, :if => :deadline_in_future?
def deadline_in_future?
Date.today < self.deadline
end
end
Tout semble ok, mais quand je l'ai dans ma console rails
irb(main):001:0> Task.new
ArgumentError: You need to supply at least one validation
Où est le problème?
Vous devez vous connecter pour publier un commentaire.
Vous avez oublié de dire
validates
comment vous souhaitez valider:deadline
. Je pense que vous êtes l'incompréhension de ce que:if
n'; la:if => :deadline_in_future?
option:Je soupçonne que vous souhaitez valider que la date limite est dans l'avenir:
De plus amples détails sont disponibles dans la Active Record des Validations et des Rappels Guide.
Vous devez modifier
validates
àvalidate
.Il dit que vous ne passe pas tous les validations de
validates
méthode. Commevalidates :presence
, par exemple. Ce que vous essayez de valider?:presence => true
dit que la présence decard_number
champ doit être validé mais la validation doit être effectuée uniquement si lepaid_with_card?
méthode renvoie la valeur true. L'idée derrière cela est que l'ordre doit avoir numéro de carte bancaire si le paiement a été effectué par carte de crédit, mais si le paiement a été fait, non pas par carte de crédit, il n'y a pas besoin de vérifier que le numéro de carte est correctement stocké.