Ruby on rails 为什么activerecord找不到具有空列的记录?
因此,如果我这样做:Ruby on rails 为什么activerecord找不到具有空列的记录?,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,因此,如果我这样做: >> 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> >>
>> 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
>u=User.find(225)
=> #
>>美国数据
=>零
所以我显然没有facebook的数据。当我使用where子句时,为什么没有出现这个记录?好的,那么,为了弄清这个问题,我进入了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将“---”识别为null,但mysql不同意。好的,那么,为了弄清这个问题,我进入了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不同意。您是否尝试过
User。where(:facebook\u data=>nil)
?是的,我得到了相同的结果——我需要能够得到相反的结果,因此我为什么要做的是空的,我还需要做的不是空的。。。所以,如果我这样做:User.where(“facebook_数据不为null”).map{u|u if u.facebook_data.nil?}.compact——那么我得到了我的用户!!!所以严重的是,这里有些东西完全坏了。你试过用户了吗。where(:facebook_data=>nil)
?是的,我得到了相同的结果——我需要能够得到相反的结果,因此我为什么要做的是空的,我还需要做的是不空的。。。所以,如果我这样做:User.where(“facebook_数据不为null”).map{u|u if u.facebook_data.nil?}.compact——那么我得到了我的用户!!!所以严重的是,这里有些东西完全坏了。我怀疑你正在序列化你的facebook\u数据(
column:)我怀疑你正在序列化你的facebook\u数据(
column:)