2011-05-12 44 views
0

一切似乎都在開發和生產環境以及工作正確處理空值:所以Rails的ActiveRecord的似乎並沒有在測試enviornment

> script/console 
Loading development environment (Rails 2.3.8) 
ruby-1.8.7-p302 > Tape.find(:first, :conditions => "deleted_at is not null").deleted_at.nil? 
=> false 
ruby-1.8.7-p302 > Tape.find(:first, :conditions => "deleted_at is null").deleted_at.nil? 
=> true

爲什麼當我在測試環境完全相反的結果?

> script/console test 
Loading test environment (Rails 2.3.8) 
ruby-1.8.7-p302 > Tape.find(:first, :conditions => "deleted_at is not null").deleted_at.nil? 
=> true

搜索deleted_at is null永遠不會返回在測試環境中的任何記錄,甚至當一些呼叫具有deleted_at = nil和一些有一個時間戳那裏。

這裏的mysql表的部分讀出:

mysql> describe tapes; 
+-----------------+--------------+------+-----+---------+----------------+ 
| Field   | Type   | Null | Key | Default | Extra   | 
+-----------------+--------------+------+-----+---------+----------------+ 
| id    | int(11)  | NO | PRI | NULL | auto_increment | 
... 
| deleted_at  | datetime  | YES |  | NULL |    | 
+-----------------+--------------+------+-----+---------+----------------+

有誰知道這是怎麼回事?這是一個錯誤?

回答

0

所以事實證明,我用來在我的夾具中創建空值的方法是不正確的。看起來,如果你想從一個csv夾具真正的空值是該字段默認爲null,只是不包括你的csv中的列。希望這會幫助別人:)

0

您的測試和生產數據庫都是MySQL還是測試數據庫SQLite?某些數據庫(如SQLite)可能會將空值視爲空字符串,因此您希望使用blank?而不是nil?

+0

偉大的想法,但是,他們都是mysql:/ – muirbot 2011-05-13 17:57:47

相關問題