表单中的rails nils

时间:2010-09-03 19:09:14

标签: ruby-on-rails ruby model null

这可能是一个简单的问题,但我注意到有一些错误来源于空值而不是nils ...

如果用户在标准rails应用程序中将字段留空,是否有办法将数据库中的字段设置为NULL而不是输入空值?

基本上像@ model.info.nil这样的支票?返回true而不是检查它是否为零和空?

2 个答案:

答案 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?的内容。