Аэропорты имеют четырехбуквенные коды ИКАО.По соглашению, они всегда в верхнем регистре.Я создаю форму для получения пользовательского ввода, но эта форма должна иметь возможность принимать пользовательский ввод в смешанном регистре и предотвращать создание дубликатов.
Значение по умолчанию :uniqueness
чувствительно к регистру,курс.Я выяснил, как преобразовать ввод пользователя в верхний регистр, прежде чем он будет сохранен, но проблема в том, что это похоже на пост-проверку, а не предварительную проверку.
Например, если уже есть Аэропортс ИКАО KLAX
пользователь может ввести klax
, он будет проверен как уникальный, а затем преобразован в верхний регистр и сохранен, что приведет к дублированию.
В настоящее время мой код модели.
class Airport < ActiveRecord::Base
validates :icao, :name, :lat, :lon, :presence => true
validates :icao, :uniqueness => true
before_save :uppercase_icao
def uppercase_icao
icao.upcase!
end
end