Se você deseja verificar se já carregou a mesma imagem antes, esta é uma maneira fácil de fazer isso:
- Crie uma migração para armazenar o SHA-1 da imagem:
rails g migration add_image_sha1_to_my_model image_sha1:string
- Calcule SHA-1 no modelo:
before_validation(on: :create) do
self.sha1 = Digest::SHA1.file(image.path).hexdigest
end
- Crie um validador personalizado para a imagem (pode ser usado para outras imagens):
class ImageValidator < ActiveModel::Validator
def validate(image)
image.errors.add(:image, 'already exists') if image.class.exists?(sha1: image.sha1)
end
end
- Adicione a validação ao modelo:
class MyModel < ActiveRecord::Base
validates_with ImageValidator
end