2010-09-03 20 views
5

Questa è probabilmente una domanda semplice, ma ho notato alcuni errori derivanti dall'avere valori vuoti al posto di Nils ...rotaie Nils in una forma

Se un utente lascia un campo vuoto in un'applicazione Rails standard è lì un modo per lasciare il campo nel database impostato su NULL invece di inserire un valore vuoto?

Fondamentalmente un assegno come @ model.info.nil? return true invece di dover verificare se è sia nullo che vuoto?

risposta

4

Io uso var.blank ?, perché ottengo questi risultati in una console di Rails 3 in esecuzione contro 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 

Storicamente, non ho visto .empty? lavoro per oggetti nulli.

+0

Grazie per averlo indicato, dovrebbe essere vuoto? infatti. –

1

modificare Come brokenbeatnik notato, ho confuso con blank?empty?, il mio male.

Non è necessario controllare entrambi valori nulli e vuoti. var.empty? restituirà true anche per nil (vedere documenti API). Quindi, di solito trovo più comodo usare solo assegni vuoti.

Ma se non lo si desidera, è possibile convertire valori vuoti in nils con active record callbacks. Qualcosa come attribute = nil if attribute.empty? ogni volta prima che l'oggetto venga salvato.

Problemi correlati