6

正規表現でフィールドを検証し、ブランク(空の文字列を受け入れる)にすることもできます。これまでのところ、私は管理唯一のことは、空の文字列を許可する正規表現を書くことで、同じよう:今すぐRails非必須フィールドのActiveRecord正規表現の検証

validates :field, 
      format: { with: /\A([a-z]+|)\z/i } 

、これは適切な方法であることはできません - これは醜いハックのように思えます。私は別の(適切な)アプローチがあるかどうか知りたいのですが?

答えて

10

allow_blankが有効です。 (allow_nilが空の文字列(のみnilの値を受け入れるためにもありません))

validates :field, 
      format: { with: /\A([a-z]+|)\z/i }, :allow_blank => true 
+0

ああ、美しく、結局はRT(F)Mの問題だと分かっていました。 =) – aL3xa

0

あなたは交代を必要としない...あなたは「ゼロ以上の」出現を指定するには、「*」数量詞を使用することができます。また、[a-z]ではなく '\ w'を使用します...これは英数字を捕捉します。

validates :field, 
     format: { with: /\A(\w*)\z/i } 
+0

私は '[a-z]'を例として挙げてきましたが、そこに '*'を使ってはいけません。 ':allow_blank'は' nil'と空文字列の両方を許すので完璧でした。 – aL3xa