当列为NULL时ActiveRecords返回什么值?

时间:2018-03-06 09:49:21

标签: ruby-on-rails ruby

我处于无法测试的环境中,我无法在互联网上找到信息或任何示例。

我们说我有这样的陈述:

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

(我知道不建议使用其他方法来处理数据库)

如果某些行有列' a'作为NULL,我在ruby中有什么? " NULL",无或其他?

2 个答案:

答案 0 :(得分:3)

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

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

如果你的列默认值不是nil(例如""或者例如0),结果将不会为零,因为在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

答案 1 :(得分:0)

使用ActiveRecord,它最有可能依赖于您拥有的数据库。我确实尝试过你的查询,而Postgres数据库显示[]空数组或[2,3]如果返回的id为2和3.请随意共享数据库类型。