布尔列在调用时返回nil

时间:2014-01-20 21:19:11

标签: ruby-on-rails activerecord

致电

pry(main)> User.where(is_validated: false).first.is_validated
  User Load (0.9ms)  SELECT "users".* FROM "users" WHERE "users"."is_validated" = 'f' ORDER BY "users"."id" ASC LIMIT 1
=> nil

有问题的模型确实存在,并且验证值为false

1 个答案:

答案 0 :(得分:0)

问题似乎是要从活动记录模型上的布尔字段获取值,您需要使用问号结束它,这将在任何列上返回布尔值

pry(main)> User.where(is_validated: false).first.is_validated?
  User Load (0.8ms)  SELECT "users".* FROM "users" WHERE "users"."is_validated" = 'f' ORDER BY "users"."id" ASC LIMIT 1
=> false

我可能错过了它,但我还没有看到其他地方记录过这个“功能”。

编辑:但是,在委派所述专栏时,似乎没有问号。

Outlet.first.is_national
  Outlet Load (34.9ms)  #...
  Location Load (51.5ms)  #...
=> true