0

開発環境と本番環境ではすべてがうまく機能しているようです。

>スクリプト/コンソール
開発環境のロード(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?
 =>真

では、なぜテスト環境で正反対の結果が得られるのでしょうか。

>スクリプト/コンソールテスト
負荷テスト環境(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>記述テープ;
+ ----------------- + -------------- + ------ + ----- + --- ------ + ---------------- +
| フィールド| タイプ| ヌル| キー| デフォルト| エクストラ|
+ ----------------- + -------------- + ------ + ----- + --- ------ + ---------------- +
| id | int(11)| いいえ| PRI | NULL | auto_increment |
..。
| 削除された_at| 日時| はい| | NULL | |
+ ----------------- + -------------- + ------ + ----- + --- ------ + ---------------- +

誰かが何が起こっているのか知っていますか?これはバグですか?

4

2 に答える 2

0

テストデータベースと本番データベースはどちらもMySQLですか、それともテストデータベースはSQLiteですか?一部のデータベース(SQLiteなど)は、null値を空の文字列と同じように扱う場合があるため、のblank?代わりに使用する必要がありnil?ます。

于 2011-05-12T23:49:39.893 に答える
0

したがって、フィクスチャでnull値を作成するために使用していた方法が正しくないことがわかりました。csvフィクスチャからの実際のnull値が必要な場合は、そのフィールドをデフォルトでnullにし、その列をcsvに含めないようにします。うまくいけば、これは他の誰かを助けるでしょう:)

于 2011-06-29T22:39:56.733 に答える