2010-09-03 7 views
5

Ceci est probablement une question simple, mais j'ai remarqué quelques erreurs provenant d'avoir des valeurs vides au lieu de nils ...rails nils sous une forme

Si un utilisateur laisse un champ vide dans une application standard des rails est là un moyen de laisser le champ dans la base de données à NULL au lieu d'entrer une valeur vide?

Fondamentalement donc une vérification comme @ model.info.nil? retourner vrai au lieu de devoir vérifier s'il est à la fois nul et vide?

Répondre

4

J'utilise var.blank ?, parce que je reçois ces résultats dans une console Rails 3 en cours d'exécution contre Ruby 1.8:

>> nil.blank? 
=> true 
>> [].blank? 
=> true 
>> nil.empty? 
NoMethodError: You have a nil object when you didn't expect it! 
You might have expected an instance of Array. 
The error occurred while evaluating nil.empty? 
     from (irb):4 

Historiquement, je n'ai pas vu .empty? travailler pour des objets nuls.

+0

Merci de le signaler, il devrait être vide? effectivement. –

1

modifier Comme brokenbeatnik noté, je confondu avec blank?empty?, mon mauvais.

Vous n'avez pas besoin de vérifier à la fois valeurs nulles et vides. var.empty? renverra true même pour zéro (voir documentation API). Donc, je trouve généralement plus pratique d'utiliser une vérification vide seulement. Mais si vous ne le souhaitez pas, vous pouvez convertir les valeurs vides en nils avec active record callbacks. Quelque chose comme attribute = nil if attribute.empty? chaque fois avant que l'objet est enregistré.

Questions connexes