Mysql типа «Time» дает «ArgumentError: аргумент вне диапазона» в Rails, если более 24 часов - PullRequest
1 голос
/ 02 ноября 2010

Я пишу приложение rails поверх устаревшей базы данных mysql, которая также поддерживает инструмент разработки PHP. Из-за этой настройки я не могу изменить структуру баз данных.

Проблема, с которой я столкнулся, состоит в том, что у двух таблиц есть атрибут «время» (длительность), если время меньше 24:00:00 : 34 Я получаю "ArgumentError: аргумент вне диапазона".

Я изучил эту проблему и увидел, как рельсы обрабатывают тип времени, и, насколько я понимаю, он воспринимает его как дату и время, поэтому значение 39:00:34 может вызвать эту ошибку.

Мне нужен какой-то способ отображения / или изменения типа приведения, чтобы я не получил эту ошибку. Чтение значения в виде строки также будет хорошо.

Любые идеи будут наиболее ценными. Приветствия

1 Ответ

0 голосов
/ 02 ноября 2010

Я не знаком с Rails, поэтому может быть чистое, нативное решение для этого, но если все остальное терпит неудачу, один обходной путь мог бы записать в поле VARCHAR, а затем выполнить второй запрос, чтобы скопировать его в TIMEполе в mySQL:

INSERT INTO tablename (name, stringfield) 
VALUES ("My Record", "999:02:02");

UPDATE tablename SET datefield = CAST(stringfield as TIME) 
WHERE id = LAST_INSERT_ID();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...