Вот что я сделал, чтобы заставить это работать:
Внутри инициализатора:
class ActiveRecord::Base
class << self
def handle_internationalization_numbers_for(*fields)
fields.each do |field_name|
define_method "#{field_name}=" do |other|
if valid_number?(other)
write_attribute(field_name, other)
else
# try converting it to a proper number
write_attribute(field_name, other.tr(".,", ",."))
end
end
end
end
end
private
def valid_number?(number)
number.to_s.match(/\A[+-]?\d+?(\.\d+)?\Z/) == nil ? false : true
end
end
Тогда в ваших моделях:
handle_internationalization_numbers_for :field_1, :field_2