Rails: Doppelte Foto-Uploads mit einer Büroklammer verhindern?

Gibt es trotzdem einen Validierungsfehler, wenn ein Benutzer versucht, dasselbe Foto mit Paperclip zweimal in eine Rails-App hochzuladen? Paperclip scheint diese Funktionalität nicht zu bieten ...

Ich benutze Rails 2.3.5 undBüroklammer (offensichtlich).

LÖSUNG: (oder zumindest einer von ihnen)

Aufgrund des Vorschlags von Beerlington habe ich mich für einen MD5-Prüfsummenvergleich entschieden:

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

Dann habe ich einfach eine Spalte zu meiner hinzugefügtphotos Tisch genanntmd5_checksumund voila! Jetzt gibt meine App einen Validierungsfehler aus, wenn Sie versuchen, dasselbe Foto hochzuladen!

Keine Ahnung, wie effizient / ineffizient das ist, also Refactoring ist willkommen!

Vielen Dank!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage