表单中的 Rails nils
这可能是一个简单的问题,但我注意到一些错误源自空值而不是 nils...
如果用户在标准 Rails 应用程序中将字段留空,是否有办法将数据库中的字段设置为 NULL而不是输入空值?
基本上是像 @model.info.nil 这样的检查?返回 true 而不必检查它是否为 nil 和空?
This is probably a simple question, but I noticed a few errors deriving from having empty values instead of nils...
If a user leaves a field blank in a standard rails app is there a way to leave the field in the database set to NULL instead of entering an empty value?
Basically so a check like @model.info.nil? return true instead of having to check if it is both nil and empty?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我使用 var.blank?,因为我在针对 Ruby 1.8 运行的 Rails 3 控制台中得到这些结果:
历史上,我没有看到 .empty?为零对象工作。
I use var.blank?, because I get these results in a Rails 3 console running against Ruby 1.8:
Historically, I haven't seen .empty? work for nil objects.
编辑正如brokenbeatnik所指出的,我将
blank?
与empty?
混淆了,我的错。您不必同时检查 nil 和空值。即使对于 nil,
var.empty?
也会返回true
(请参阅 API 文档)。所以,我通常发现仅使用空支票更方便。但如果您不希望这样,您可以使用 活动记录回调将空值转换为 nils 。每次在保存对象之前,都会出现类似
attribute = nil if attribute.empty?
的情况。edit As brokenbeatnik noted, I confused
blank?
withempty?
, my bad.You don't have to check both nil and empty values.
var.empty?
will returntrue
even for nil (see API docs). So, I usually find it more convenient to use empty check only.But if you don't want that, you can convert empty values to nils with active record callbacks. Something like
attribute = nil if attribute.empty?
each time before object is saved.