1

所以,如果我这样做:

>> User.where("facebook_data IS null")
(0.5ms)  SELECT COUNT(*) FROM `users` WHERE (facebook_data IS null)
=> []

如果还没有,我会查找我的用户帐户:

>> u = User.find(225)
=> #<User id: 225, email: "me@example.com", ...etc>
>> u.facebook_data
=> nil

所以我显然没有facebook_data。为什么当我使用 where 子句时这条记录没有出现?

4

1 回答 1

1

好的,所以要深入了解这一点,我进入了 mysql:

mysql> select users.facebook_data from users WHERE users.id = 225;
+---------------+
| facebook_data |
+---------------+
| --- 
         |
+---------------+
1 row in set (0.00 sec)

然后在控制台..

> User.find(225).facebook_data == nil
User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 225 LIMIT 1
=> true 

所以... ActiveRecord 以某种方式在列中放置了“---”而不是“NULL”...... ActiveRecord 将“---”识别为空,但 mysql 不同意。

于 2012-07-12T00:35:28.607 回答