ruby-on-rails - 当列为 NULL 时,ActiveRecords 返回什么值?

标签 ruby-on-rails ruby

我处于无法测试的环境中,而且我在 Internet 上找不到信息或任何示例。

假设我有这样的声明:

ActiveRecord::Base.connection.select_values("select a from table_b where id = 'x'")

(我知道不推荐,最好用其他方式处理数据库)

如果某些行的“a”列为 NULL,我在 ruby​​ 中有什么? “NULL”、Nil 还是其他?

最佳答案

Ruby 只有一个值是空的,即 nil。与其他语言相比,这是 Matz 绝对正确的一件事。

在大多数情况下,适配器将 SQL 中的 NULL 值映射到 nil

如果你有一个不是 nil 的默认列(比如 ""或 0),结果将不会是 nil,因为在 Ruby 中没有什么可以等同于 nil(不像一些非常流行但设计不佳的语言)。

irb(main):003:0> nil == ""
=> false
irb(main):004:0> nil == 0
=> false
irb(main):005:0> nil == false
=> false
irb(main):006:0> !!nil
=> false

关于ruby-on-rails - 当列为 NULL 时,ActiveRecords 返回什么值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49127824/

相关文章:

javascript - document.observe ('dom:loaded' , 函数 () {

ruby-on-rails - 如何在不加载 ActiveRecord 中的对象的情况下更新列

ruby - 如何更改 Ruby 中 FFI 调用的 STDOUT?

表示性别或性别的 Ruby 约定

ruby-on-rails - 使用 sudo 设置 Ruby on Rails 是否被认为是一种不好的做法?

mysql - Rails 获取每个标签的最新 n 个帖子

javascript - 将 Controller 放入单独的文件后, Angular rails 应用程序无法工作

ruby - 如何在 Ruby 中拼出整数?

ruby - 意外的 tSTRING_BEG,期望 keyword_do 和用户提示不起作用

ruby - Byebug 如何在没有断点的情况下继续