ruby-on-rails – Rails:用Paperclip防止重复的照片上传?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails:用Paperclip防止重复的照片上传?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果用户尝试使用Paperclip将相同的照片两次上传到Rails应用程序,是否有抛出验证错误? Paperclip似乎没有提供此功能

我使用的是Rails 2.3.5和Paperclip(显然).@H_301_3@

(或者至少有一个)@H_301_3@

使用Beerlington的建议,我决定用MD5校验和比较:@H_301_3@

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

然后我刚刚在我的照片表中添加了一个名为md5_checksum的列,瞧瞧!如果您尝试上传相同的照片,我的应用程序会抛出验证错误!@H_301_3@

不知道这是多么高效/低效,所以重构的欢迎!@H_301_3@

谢谢!@H_301_3@

解决方法

如何在图像文件上执行MD5?如果它是完全相同的文件,MD5哈希将是相同的两个图像.

猜你在找的Ruby相关文章