ruby-on-rails – Rails – Paperclip – 如何在保存前检查图像尺寸

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails – Paperclip – 如何在保存前检查图像尺寸前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Rails 3应用程序与回形针.
我想防止使用剪贴画保存宽带/高度的LTE 50×50的图像.

这可能吗?

解决方法

是的!这是我为我的应用程序编写的一个自定义验证,它应该在您的应用中逐字逐行,只需将像素设置为任何您想要的.
def file_dimensions
  dimensions = Paperclip::Geometry.from_file(file.queued_for_write[:original].path)
  self.width = dimensions.width
  self.height = dimensions.height
  if dimensions.width < 50 && dimensions.height < 50
    errors.add(:file,'Width or height must be at least 50px')
  end
end

有一件事要注意,我使用self.width =和self.height =为了将维度保存到数据库,如果不在乎存储图像尺寸,可以将它们保留下来.

检查宽度和高度意味着只有一个必须大于50像素.如果你想确保BOTH超过50,讽刺的是,需要检查宽度或高度.对我来说似乎很奇怪,一个或另一个意思是一个AND检查,两者都意味着OR,但在这种情况下是正确的.

唯一的其他问题是,您需要运行此验证LAST:如果模型上已经有其他错误,它将引发异常.说实话,这是一段时间,所以我不记得错误信息是什么,但在你的验证宏使用这个:

validate :file_dimensions,:unless => "errors.any?"

这应该照顾它!

猜你在找的Ruby相关文章