2010-09-03 56 views
5

這可能是一個簡單的問題,但我注意到了一些錯誤從具有空值,而不是尼爾斯獲得...軌尼爾斯

如果用戶離開領域的空白在一個標準的Rails應用程序是有一種將數據庫中的字段設置爲NULL而不是輸入空值的方法?

基本上這樣的檢查像@ model.info.nil?返回true而不必檢查它是否爲空和空?

回答

4

我用var.blank?因爲我得到這些結果對Ruby 1.8中運行一個Rails 3控制檯:

>> 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 

歷史上,我還沒有見過.empty?爲零對象工作。

+0

謝謝指出,它應該是空白的?確實。 – 2010-09-03 19:25:37

1

編輯作爲brokenbeatnik指出,我迷茫blank?empty?,是我不好。

您不必檢查零和空值。即使爲零,​​也會返回true(請參閱API文檔)。所以,我通常會發現使用空檢查更方便。

但是,如果你不想這樣做,你可以使用active record callbacks將空值轉換爲nils。每次保存對象之前,都會提供類似於attribute = nil if attribute.empty?的內容。