У меня есть база данных с размером enginze для автомобиля Поэтому пользователь может написать что-то вроде 2.5 (например, в литрах) или 2500 (куб. См) Позже у меня есть сортировка, и она должна использовать 999 -9999 для сравненияРельсы конвертировать целое значение перед сохранением
Я подошел к функции ниже, но мне бы хотелось, чтобы она была более гибкой. Более того, 2.5, вызвавший результат 2000 теперь, потому что выглядит как преобразование Rails перед запуском before_save
Как сделать преобразование правым и определить, есть ли точка или запятая на входе?
before_save :covert_engine
private
def covert_engine
if self.car_engine_size.present?
if Math.log10(self.car_engine_size).to_i + 1 < 4
self.car_engine_size = self.car_engine_size * 1000
end
end
end
P.S. self.car_engine_size - целое число в базе данных
http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/BeforeTypeCast.html – max