Rails: Предотвращение дублирования загрузки фотографий с помощью скрепки?

Есть ли способ выдать ошибку проверки, если пользователь пытается дважды загрузить одну и ту же фотографию в приложение Rails с помощью Paperclip? Скрепка, кажется, не предлагает эту функциональность ...

Я использую Rails 2.3.5 иСкрепка для бумаг (Очевидно).

РЕШЕНИЕ: (или один из них, по крайней мере)

Используя предложение Берлингтона, я решил пойти с сравнением контрольной суммы 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и вуаля! Теперь мое приложение выдает ошибку проверки, если вы пытаетесь загрузить ту же фотографию!

Не знаю, насколько это эффективно / неэффективно, так что рефакторинг приветствуется!

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос