表单中的 Rails nils

发布于 2024-09-17 10:58:13 字数 168 浏览 7 评论 0原文

这可能是一个简单的问题,但我注意到一些错误源自空值而不是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小巷里的女流氓 2024-09-24 10:58:13

我使用 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?为零对象工作。

I use var.blank?, because I get these results in a Rails 3 console running against Ruby 1.8:

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

Historically, I haven't seen .empty? work for nil objects.

自此以后,行同陌路 2024-09-24 10:58:13

编辑正如brokenbeatnik所指出的,我将blank?empty?混淆了,我的错。

您不必同时检查 nil 和空值。即使对于 nil,var.empty? 也会返回 true(请参阅 API 文档)。所以,我通常发现仅使用空支票更方便。

但如果您不希望这样,您可以使用 活动记录回调将空值转换为 nils 。每次在保存对象之前,都会出现类似 attribute = nil if attribute.empty? 的情况。

edit As brokenbeatnik noted, I confused blank? with empty?, my bad.

You don't have to check both nil and empty values. var.empty? will return true 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文