2012-01-06 8 views
21

私は、フォーム値のフォーマットを検証し、空の値を許可したり、特定のフォーマットを要求したいと考えています。 Rails:値が存在する場合にのみフォーマットを検証する方法は?

が、これは正常に動作し、フォーマットに対して値を検証するには、次の

validates :application_bundle_identifier, :format => { 
    :with => /^[a-zA-Z0-9.-]+$/, 
    :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters." 
} 

さて、私は、ユーザーがすべてで値を入力しないことができるようにしたいと思います。この場合、正規表現を^[a-zA-Z0-9.-]*$に微調整することはできますが、これはRailsのようには見えません。フォーマットに応じて、それは不可能であるか、少なくともあまり明確ではないかもしれません。

この場合のベストプラクティスは何ですか?

答えて

45

属性が空白/空/ nilである場合には、:allow_blank => trueオプションを使用して検証をスキップできます。

0

unless nil? || blank?を追加します。これは、空白(空)またはnilの場合は検証をスキップする必要があります。

this pageの最後のコード例を参照してください。

+0

どのような例がありますか? –

+0

'lib/email_format_validator.rb'のページの一番下にあるカスタムバリデータ – jefflunt

+0

最初に参照してから変更してください。 –

関連する問題