Walidacja kodu pocztowego

Witam, staram się dostosować walidacje kodu pocztowego żeby było przepuszczane nic oprócz formatu 11-111
oto co mam:

validates :adres_kod, :format => { :with => /\A[0-9]{2}(-\d{3})?$/, :message => 'nie poprawny format kodu pocztowego.' }, allow_blank: false
próbowałem to na milion sposobów przerobić ale nie udało się tak żeby tylko akceptował format 11-111
dodam jeszcze że opcja :length, :is nie działa …
znalazłem też coś takiego

def validate unless self.zipcode.to_s.size == 5 errors.add("zipcode", "should be 5 digits") end end
przerobiłem dodałem do user.rb ale też bez efektu

[quote=m1l05z]validates :adres_kod, :format => { :with => /\A[0-9]{2}(-\d{3})?$/, :message => 'nie poprawny format kodu pocztowego.' }, allow_blank: false
[/quote]
To wyrażenie regularne akceptuje również np. 22. A czemu nie używasz prostszego /\A\d{2}-\d{3}\z/ ?? Inna kwestia jest taka, że kod ma 6 znaków, a nie 5 (nie zapomnij o minusie!)

zmieniłem na twoje:

  validates :adres_kod, :format => { :with => /\A\d{2}-\d{3}\z/, :message => 'nie poprawny format kodu pocztowego.' }, allow_blank: false

i teraz nie akceptuje mi 11-234 wyświetla message

napisałem że zmodyfikowałem tamto dokładnie na takie coś:

def validate unless self.adres_kod.to_s.size == 6 errors.add("adres_kod", "powinien składać się z 6 znaków") end end
i to generowało poważniejszy błąd

undefined method `key?' for nil:NilClass

http://rubular.com/r/K7XmOlXmUH - wygląda, że powinno akceptować.

zwracam honor Panu apohllo ;]
zajrzałem do shemy i okazało się że miałem ustawione

    t.integer   "adres_kod" 

dlatego nie chciało działać poprawiłem na stringa i już działa poprawnie :wink:
jeszcze raz mój błąd
sory i Pozdrawiam