ええ、私は、この理由だけでzipを整数として格納することは意味がないことに同意します。また、アプリに米国以外の郵便番号が必要ないことを確認する必要があると思います。ただし、これらの警告は邪魔になりません...
何らかの理由でデータベースを変更できない場合は、次のように郵便番号のgetメソッドを変更できます。
def zip
val = read_attribute(:zip).to_s
val.length < 5 ? add_leading_zeros(val) : val
end
def add_leading_zeros(val)
while val.length < 5 do
val = "0" + val.to_s
end
val
end
これは一種のハッキーであり、DBフィールドを文字列(varchar)に変更できる場合は、この方法を使用することはお勧めしません。
また、使用している検証を変更することもできます。これにより、5文字未満の郵便番号が許可されます。
多分このようなものを使用してください:
validates_format_of :zip, :with => /^\d{5}$/
編集:この答えはここに残しておきますが、OPがすでにDBのフィールドタイプを変更していることに気づきました...だから、ええ、これをすべて入力したのは少しばかげています。