Rails图像URLvalidation

假设我在表中有记录,并且每个都有一个图标属性,它采用表单的URL:

  • 球/ x.png
  • 球/ y.png
  • 球/ z.png

如何编写validation,确保url以“balls /”开头,以.png,.gif结尾。 还是.jpg?

我当前的validation只是检查文件扩展名:

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

如何编写validation,确保url以“balls /”开头,以.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" 

但是您可以在同一个字段上进行多次validation。 所以,这也会起作用,并且更具可读性:

 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" 

一个直接的正则表达怎么样:

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