使用.where测试属性是否为零

时间:2012-11-12 12:29:50

标签: ruby-on-rails-3 activerecord where

我正在使用devise_invitable。

我正在尝试找到invitation_token != nil

的所有用户

我认为User.where(:invitation_token != nil) 会做..但它会返回所有用户..

当我做的时候

pry(main)> User.where(:invitation_token != nil)[0].invitation_token
  User Load (1.0ms)  SELECT "users".* FROM "users" WHERE ('t')
=> nil

所以我不明白这里发生了什么..如何在测试失误的地方找到模型?

3 个答案:

答案 0 :(得分:2)

你应该这样做:

User.where('invitation_token IS NOT NULL')

您的解决方案不起作用,因为:invitation_token != nil会评估为true,所以您实际做的是:

User.where(true)

答案 1 :(得分:1)

根据您的导轨版本,这更漂亮:

User.where.not(invitation_token: nil)

答案 2 :(得分:-1)

也许你可以这样做:

User.where(:invitation_token => nil)
User.where("invitation_token IS NULL")

它继续......