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
validates :network_id, :numericality => true, :allow_nil => true
validates :network_id, :numericality => {:allow_blank => true}
Vous devriez utiliser allow_blank
validates :network_id, :numericality => true, :allow_blank => true
Dans Rails 4 ( Ruby 2 ), vous pouvez écrire:
validates :network_id, numericality: { greater_than_or_equal_to: 0, allow_nil: true }
Vous pouvez aussi écrire comme ça ...
validates_numericality_of :network_id, allow_nil: true