web-dev-qa-db-fra.com

La validation des rails a nécessité la numéricité même si la présence n'est pas définie sur true

J'essaie de sauvegarder un enregistrement qui n'a pas un seul champ, ce qui a une valeur numérique valide dans les modèles. Même si la présence n'est pas requise dans la validation, il y a toujours erreur que le champ n'est pas un nombre.

Validation:

validates :network_id,    :numericality => true

Le code qui enregistre le modèle:

networks.each do |network|
  network.url = network.raw_data.link
  network.save!
end

Erreur:

Validation failed: Network is not a number
58
Hopstream
validates :network_id, :numericality => true, :allow_nil => true
119
Unixmonkey
    validates :network_id, :numericality => {:allow_blank => true}
39
p.matsinopoulos

Vous devriez utiliser allow_blank

validates :network_id,    :numericality => true, :allow_blank => true
15
apneadiving

Dans Rails 4 ( Ruby 2 ), vous pouvez écrire:

validates :network_id, numericality: { greater_than_or_equal_to: 0, allow_nil: true }
10
sergserg

Vous pouvez aussi écrire comme ça ...

validates_numericality_of :network_id, allow_nil: true
0
thedanotto