这可能是一个简单的问题,但我注意到有一些错误来源于空值而不是nils ...
如果用户在标准rails应用程序中将字段留空,是否有办法将数据库中的字段设置为NULL而不是输入空值?
基本上像@ model.info.nil这样的支票?返回true而不是检查它是否为零和空?
答案 0 :(得分: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?为零对象工作。
答案 1 :(得分:1)
编辑当 brokenbeatnik 注意到时,我将blank?
与empty?
混为一谈,我的情况很糟糕。
您不必检查两个 nil和空值。即使是nil,var.empty?
也会返回true
(请参阅API文档)。所以,我通常发现只使用空检查会更方便。
但是如果您不想这样做,可以使用active record callbacks将空值转换为nils。每次保存对象之前都会有类似attribute = nil if attribute.empty?
的内容。