2011-07-11 6 views
1

のは、私は、テーブル内のレコードを持っており、それぞれがフォームのURLをとりicon属性を持っているとしましょう:Railsの画像URLの検証

  • ボール/ x.png
  • ボール/ y.png
  • ボール/ z.png
  • ...

は、どのように私は、URLが "ボール/" で始まり、.PNG、.GIFのいずれかで終わるを確認します検証を書きます。または.jpg?

私の現在の検証は、単にファイルの拡張子をチェック:

validates_format_of :icon, :with => %r{\.(gif|jpg|png)$}i, :message => 'must be a URL for GIF, JPG ' + 'or PNG image.' 

答えて

6

私はURLで始まる確認します検証を書くにはどうすればよいです"ボール/"で終わり、いずれかの.png、.gifで終わります。または.jpg?

これは動作します:

validates_format_of :icon, 
    :with => %r{^balls/.+\.(gif|jpe?g|png)$}i, 
    :message => "must start with 'balls/' and have an image extension" 

しかし、あなたが同じフィールドに複数のバリデーションを持つことができます。したがって、これも機能し、より読みやすくなります:

validates_format_of :icon, 
    :with => %r{^balls/.+}i, 
    :message => "must start with 'balls/' and have a filename" 

validates_format_of :icon, 
    :with => %r{\.(gif|jpe?g|png)$}i, 
    :message => "must have an image extension" 
0

どのようなまっすぐな正規表現について:

validates_format_of :icon, :with => %r{^(balls\/)[A-Za-z]+\.(gif|jpg|png)$}i, :message => 'icon must start with balls'