Что не так со следующим кодом?
При выполнии этого участка кода возникает ошибка:
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
Комментариев нет:
Отправить комментарий