2010-09-03 49 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?的内容。