Los aeropuertos tienen códigos ICAO de cuatro letras. Por convención, estos son siempre en mayúsculas. Estoy creando un formulario para recibir información del usuario, pero este formulario debe poder aceptar las entradas del usuario en mayúsculas y minúsculas e impedir que creen duplicados.Rieles: campo de fuerza mayúscula y validación única
El valor predeterminado :uniqueness
distingue entre mayúsculas y minúsculas, por supuesto. Descubrí cómo transformar la entrada del usuario en mayúscula antes de que se guarde, pero el problema es que parece ser una validación posterior, en lugar de una validación previa.
Por ejemplo, si ya hay un aeropuerto con ICAO de KLAX
, un usuario puede ingresar klax
, se validará como único, y luego se transformará a mayúsculas y se almacenará, lo que generará duplicados.
Aquí está el código de mi modelo en este momento.
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
o hacer una before_validation en lugar de before_save :) –
perfecto, Danny - before_validation es exactamente lo que necesitaba. – tkrajcar