我有一个Rails 3应用程序与回形针.
我想防止使用剪贴画保存宽带/高度的LTE 50×50的图像.
我想防止使用剪贴画保存宽带/高度的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?"
这应该照顾它!