gpt4 book ai didi

ruby - PaperClip - 如何根据尺寸跳过附件的保存

转载 作者:数据小太阳 更新时间:2023-10-29 08:10:34 25 4
gpt4 key购买 nike

我有一个带回形针的 Rails 3 应用程序。如果附件是图片,并且图片的宽度或高度小于 100,我想跳过保存。

模型中有以下内容:

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

def file_dimensions
dimensions = Paperclip::Geometry.from_file(attachment.to_file(:original))
if dimensions.width < 100 || dimensions.height < 100
errors.add(:file,'Width or height must be at least 100px')
end
end

问题是我不想引发错误,因为那样整个作业都会失败,我只想回形针跳过该附件的保存,而不是停止整个过程。

最佳答案

你声称你不想引发错误,所以你可以保存。在这种情况下,只需使用 :before_validate 回调:

before_validate :check_file_dimensions

def check_file_dimensions
if attachment.dirty?
dimensions = Paperclip::Geometry.from_file(attachment.to_file(:original))
if dimensions.width < 100 || dimensions.height < 100
attachment.clear
end
end
end

当然,如果你想向用户显示一条错误消息,你需要在实例 var 或其他东西中传递它(显然你不能使用错误,否则它不会保存)。

attachment.dirty?上面的行是一个小的改进,这样您就不会在每次保存模型时都不断地检查附件,而只是在上传新附件时才检查附件。如果您将文件存储在 S3 上,这一点尤为重要。

关于ruby - PaperClip - 如何根据尺寸跳过附件的保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5561859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com