0

一切似乎都在开发和生产环境中运行良好:

> 脚本/控制台
加载开发环境(Rails 2.3.8)
ruby-1.8.7-p302 > Tape.find(:first, :conditions => "deleted_at is not null").deleted_at.nil?
 => 假的
ruby-1.8.7-p302 > Tape.find(:first, :conditions => "deleted_at is null").deleted_at.nil?
 => 真

那么为什么我在测试环境中得到完全相反的结果呢?

> 脚本/控制台测试
加载测试环境(Rails 2.3.8)
ruby-1.8.7-p302 > Tape.find(:first, :conditions => "deleted_at is not null").deleted_at.nil?
 => 真

搜索deleted_at is null永远不会在测试环境中返回任何记录,即使有些调用有deleted_at = nil并且有些有时间戳。

这是mysql表的部分读数:

mysql> 描述磁带;
+-----------------+--------------+------+-----+--- ------+----------------+
| 领域 | 类型 | 空 | 钥匙 | 默认 | 额外 |
+-----------------+--------------+------+-----+--- ------+----------------+
| 编号 | 整数(11) | 否 | 优先级 | 空 | 自动增量 |
...
| 删除_at | 日期时间 | 是 | | 空 | |
+-----------------+--------------+------+-----+--- ------+----------------+

有谁知道发生了什么?这是一个错误吗?

4

2 回答 2

0

所以事实证明,我用来在我的夹具中创建空值的方法是不正确的。似乎如果你想要一个来自 csv 固定装置的真正的空值是让该字段默认为空,并且只是不要在你的 csv 中包含该列。希望这对其他人有帮助:)

于 2011-06-29T22:39:56.733 回答
0

您的测试和生产数据库都是 MySQL 还是测试数据库 SQLite?某些数据库(如 SQLite)可能会将 null 值视为与空字符串相同,因此您希望blank?使用nil?.

于 2011-05-12T23:49:39.893 回答