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

标签 ruby-on-rails ruby-on-rails-3 paperclip

我有一个带有回形针的 Rails 3 应用程序。
我想防止回形针保存宽度/高度为 LTE 50x50 的图像。

这可能吗?

最佳答案

是的!这是我为我的应用程序编写的自定义验证,它应该在您的应用程序中逐字运行,只需将像素设置为您想要的任何值。

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=为了将尺寸保存到数据库中,如果您不关心存储图像尺寸,则可以将它们排除在外。

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

唯一的其他问题是,您需要最后运行此验证:如果模型上已经存在其他错误,它将引发异常。老实说已经有一段时间了,所以我不记得错误消息是什么,但是在您的验证宏中使用这个:
validate :file_dimensions, :unless => "errors.any?"

那应该管它!

关于ruby-on-rails - Rails - Paperclip - 如何在保存前检查图像尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5454561/

相关文章:

javascript - 使用 Rails View 定期轮询数据库更新而不刷新

jquery - rails : How to get Jquery to update a database column after a click

ruby-on-rails - 我可以只接受来自域名的帖子请求吗?

ruby-on-rails-3 - 如何使Rails 3 I18n翻译自动安全?

ruby-on-rails - Michael Hartl 的 Ruby on Rails 教程。第 9 章中的失败测试

ruby-on-rails - 回形针:无法附加 XLS(但 DOC 可以)

css - rails 电子邮件不显示来自 css 的图像

ruby-on-rails - 如何使用 Paperclip 为我的附件指定文件名?

ruby-on-rails - Rails 3,回形针 + S3 - 如何存储实例并保护访问

ruby-on-rails - 简单的 Rails 文本字段格式