Число с плавающей запятой - это число, а регулярные выражения - для строк.
Похоже, что когда вы вводите строку для числа с плавающей запятой, Rails автоматически конвертирует ее в 0.0.по умолчанию (0,0) на столбце?Если да, то вы можете попробовать удалить его и использовать только validates_presence_of :price
.
Что-то попробовать: вместо помещения строки непосредственно в столбец price
, поместите ее в атрибут price_string
и используйте обратный вызов before_save
, чтобы попытаться преобразовать строку в цену.Примерно так:
attr_accessor :price_string
before_save :convert_price_string
protected
def convert_price_string
if price_string
begin
self.price = Kernel.Float(price_string)
rescue ArgumentError, TypeError
errors.add(ActiveRecord::Errors.default_error_messages[:not_a_number])
end
end
И в вашей форме измените имя текстового поля на :price_string
.