1

我正在使用 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

所以我不明白这里发生了什么.. 当测试为假时,如何使用 where 找到模型?

4

3 回答 3

2

你应该做:

User.where('invitation_token IS NOT NULL')

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

User.where(true)
于 2012-11-12T12:49:47.377 回答
1

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

User.where.not(invitation_token: nil)
于 2014-06-19T17:13:20.550 回答
-1

也许你可以这样做:

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

它继续...

于 2012-11-12T12:39:32.440 回答