Rails ActiveRecord, похоже, неправильно обрабатывает нулевые значения в тестовой среде - PullRequest
0 голосов
/ 13 мая 2011

В средах разработки и производства все работает хорошо:

> 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    |                |
+-----------------+--------------+------+-----+---------+----------------+

Кто-нибудь знает, что происходит?Это ошибка?

Ответы [ 2 ]

0 голосов
/ 30 июня 2011

Получается, что метод, который я использовал для создания нулевых значений в моем приборе, был неверным. Похоже, что если вы хотите получить реальное нулевое значение из приспособления csv, вам нужно установить в этом поле значение по умолчанию null и просто не включать этот столбец в ваш csv. Надеюсь, это поможет кому-то еще:)

0 голосов
/ 13 мая 2011

Ваши тестовые и производственные базы данных - MySQL или тестовая база данных SQLite? Некоторые базы данных (например, SQLite) могут обрабатывать нулевое значение так же, как пустую строку, поэтому вы хотите использовать blank? вместо nil?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...