Я взаимодействую с продолжительностью времени в форме рельсов, в настоящее время это текстовое поле, и формат требует MM: SS
У меня есть валидатор:
validates_format_of :time, :with => /^[0-9]?[0-9]{1}[:][0-9]{2}$/, :allow_nil => true, :allow_blank => true, :message => 'format must be MM:SS'
хотя яЯ хочу сохранить это в базе данных как целое число (в секундах), чтобы упростить создание отчетов по этому полю.
Я переписал методы доступа как:
def time=(new_time)
parts = new_time.split(':')
write_attribute(:time, (parts[0].to_i * 60) + parts[1].to_i)
end
def time
Time.at(read_attribute(:time).to_i).gmtime.strftime('%R:%S')
end
, но это заканчивается отправкойошибка проверки, поскольку атрибут time является целым числом после того, как его установил метод time =.
Как сохранить значение длительности в базе данных в секундах, но при этом выполнить проверку в другом формате (MM: SS)
?