У меня есть бизнес-модель с десятичным полем. Его значение должно находиться в диапазоне от 0,00 до 999,99. Поэтому я создал десятичное поле и добавил проверки в модель.
class Order < ApplicationRecord
validates :price, format: { with: /\A\d+(?:\.\d{0,2})?\z/ }, numericality: { greater_than: 0, less_than: 1000 }
end
Когда я создаю объект Order с десятичным значением, которое больше 1000 или меньше 0, я получаю ожидаемую ошибку, и это нормально. Я вижу, что проверки "числовости: {больше_чем: 0, меньше_чем: 1000}" работают, как и ожидалось.
Однако, когда я пытаюсь создать объект Order с десятичным значением 45,45554 или 45,45666, rails сохраняет объект в базе данных со значением цены 45,45. Я ожидаю получить ошибку формата, но кажется, что проверка формата не работает.
Что я делаю неправильно?
Какие-либо предложения,
Спасибо.