Что не так со следующим кодом?
При выполнии этого участка кода возникает ошибка:
ArgumentError: comparison of String with Date failed
Это связано с тем, что мы пытаемся сравнить дату со строкой. Из hstore мы получаем строку, поэтому в переменной start_date содержится дата в виде строки, к примеру "2015-03-10".
Для устранения ошибки нужно преобразовать строку в дату. Для этого в Rails есть метод to_date.
Теперь ошибки возникать не будет:
А сможете ли вы найти ошибку в этом коде?
Данный код будет вызывать ошибку:
TypeError: can't convert Rational into String
Причина аналогична предыдущей, мы забыли преобразовать строковое значение, полученное из hstore, в дату.
Вот как должно быть:
# здесь custom_lot_attributes - колонка типа 'hstore' в таблице lots start_date = lot.custom_lot_attributes['start_date'] if start_date && start_date < Date.today # ... end
При выполнии этого участка кода возникает ошибка:
ArgumentError: comparison of String with Date failed
Это связано с тем, что мы пытаемся сравнить дату со строкой. Из hstore мы получаем строку, поэтому в переменной start_date содержится дата в виде строки, к примеру "2015-03-10".
Для устранения ошибки нужно преобразовать строку в дату. Для этого в Rails есть метод to_date.
Теперь ошибки возникать не будет:
start_date = lot.custom_lot_attributes['start_date'].to_date if start_date && start_date < Date.today # ... end
А сможете ли вы найти ошибку в этом коде?
start_date = lot.custom_lot_attributes['start_date'].to_date if start_date && start_date < Date.today lot.custom_lot_attributes['start_date'] = Date.today lot.custom_lot_attributes['end_date'] = lot.custom_lot_attributes['end_date'] + (Date.today - lot.custom_lot_attributes['start_date']) end
Данный код будет вызывать ошибку:
TypeError: can't convert Rational into String
Причина аналогична предыдущей, мы забыли преобразовать строковое значение, полученное из hstore, в дату.
Вот как должно быть:
start_date = lot.custom_lot_attributes['start_date'].to_date if start_date && start_date < Date.today lot.custom_lot_attributes['start_date'] = Date.today lot.custom_lot_attributes['end_date'] = lot.custom_lot_attributes['end_date'].to_date + (Date.today - lot.custom_lot_attributes['start_date'].to_date) end
Комментариев нет:
Отправить комментарий