私はRails 4アプリに取り組んでおり、ユーザーアドレスの一部として「B1C 2B3」などのカナダの郵便番号に対して検証する必要があります。
この宝石https://github.com/globaldev/going_postalを見つけましたが、検証のためだけに殺されていると思います。
郵便番号の検証を記述する別の方法はありますか?
私はRails 4アプリに取り組んでおり、ユーザーアドレスの一部として「B1C 2B3」などのカナダの郵便番号に対して検証する必要があります。
この宝石https://github.com/globaldev/going_postalを見つけましたが、検証のためだけに殺されていると思います。
郵便番号の検証を記述する別の方法はありますか?
gem を追加する代わりに oneliner を要求することは理解していますが、他の人がそのオプションを検討している場合に備えて、validates_zipcode
私が書いた gem を使用できます。現在、259 か国の郵便番号形式をサポートしており、そのほとんどはCLDR データベースから取得されており、Rails 3 および 4 とうまく連携しています。カナダもサポートしています :)
次のように使用できます。
class Address < ActiveRecord::Base
validates_zipcode :zipcode
# or
validates :zipcode, zipcode: { country_code_attribute: :postal_code }
end
debuggex (優れた正規表現テスト サイト) で、カナダの郵便番号の正規表現が
[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}
そのパターンに対して文字列をチェックするには、次の検証を行います。
canadian_postal_code = /\A[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1}[ -]?\\d{1}[A-Z]{1}\\d{1}\z/
validates :postal_code, format: { with: canadian_postal_code }
検証では、次のようにする必要があります(すべて単一のスラッシュ、二重ではありません):/\A[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1}[ -]?\d{1}[A-Z]{1}\d{1}\z/