т. поле экономии времени в виде строки в ActiveRecord

#ruby-on-rails #activerecord

#ruby-on-rails #activerecord

Вопрос:

У меня есть таблица с вызываемым полем time_start . Пример:

 t.time :time_start
  

Когда я пытаюсь сохранить атрибут, он сохраняет его как хэш-строку. Пример:

 params{
       "time_start(1i)"=>"2016",
       "time_start(2i)"=>"10",
       "time_start(3i)"=>"12",
       "time_start(4i)"=>"23",
       "time_start(5i)"=>"59",
}

=> "{1=>2016, 2=>10, 3=>12, 4=>23, 5=>59}"
  

Я не могу понять, почему атрибут сохраняет строку вместо синтаксического анализа во времени obj. Я даже пробовал rake db:rollback VERSION=123456546 перенос непосредственно перед ним, но он все равно сохраняет значение в виде строки после rake db:migrate . Мне не разрешено удалять таблицу.

Комментарии:

1. Какую версию Rails и базу данных вы используете?

2. Rails 4.2.1 и postgres (PostgreSQL) 9.4.9

3. Ничего особенного. Можете ли вы также опубликовать свою модель и asignment?

Ответ №1:

Оглядываясь назад на коммиты, младший разработчик изначально назначил time_start поле как string тип данных в таблице B . Решение состояло в том, чтобы захватить номер версии предыдущей миграции (таблицы A ) и rake db:migrate VERSION=213412341234 затем запустить rake db:migrate . Теперь оно сохраняется правильно.