Schienen - Kraft-Feld in Großbuchstaben und validieren eindeutig

Flughäfen haben vier-Buchstaben-ICAO-codes. Von convention, diese werden immer mit Großbuchstaben. Ich erstelle ein Formular für den Empfang von Benutzereingaben, aber auch diese form muss in der Lage sein zu akzeptieren Benutzereingaben in gemischter groß - /Kleinschreibung, und verhindern, dass Sie von der Erstellung der Duplikate.

Den Standard - :uniqueness groß-und Kleinschreibung, natürlich. Ich fand heraus, wie transformieren die Eingabe des Benutzers in Großbuchstaben, bevor es gespeichert wird, aber das problem ist, dass dies scheint zu sein, post-überprüfung, statt der pre-Validierung.

Zum Beispiel, wenn es bereits eine Airport mit der ICAO von KLAX ist, kann ein Benutzer geben Sie klax, wird es überprüft werden, wie einzigartig, und dann umgewandelt in Großbuchstaben und gespeichert, was zu Duplikaten.

Hier ist meine Modell-code zu präsentieren.

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
InformationsquelleAutor tkrajcar | 2011-02-22
Schreibe einen Kommentar