如果用户尝试使用 Paperclip 将同一张照片上传到 Rails 应用程序两次,是否会引发验证错误? Paperclip 似乎没有提供此功能...
我正在使用 Rails 2.3.5 和回形针(明显地)。
解决方案:(或至少其中之一)
根据 Beerlington 的建议,我决定进行 MD5 校验和比较:
class Photo < ActiveRecord::Base
#...
has_attached_file :image #, ...
before_validation_on_create :generate_md5_checksum
validate :unique_photo
#...
def generate_md5_checksum
self.md5_checksum = Digest::MD5.hexdigest(image.to_file.read)
end
def unique_photo
photo_digest = self.md5_checksum
errors.add_to_base "You have already uploaded that file!" unless User.find(self.user_id).photos.find_by_md5_checksum(photo_digest).nil?
end
# ...
end
然后我刚刚添加了一列到我的photos
表称为md5_checksum
,瞧!现在,如果您尝试上传同一张照片,我的应用程序会抛出验证错误!
不知道这有多高效/低效,所以欢迎重构!
Thanks!
对图像文件进行 MD5 怎么样?如果是完全相同的文件,则两个图像的 MD5 哈希值将相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)