Dear Dave,

That looks like it's very nearly there. I suspect that the error you are
encountering is because `self.image` in Step 2 is the ImageUploader
itself, rather than the path to the file. I don't think you need to
worry about trying to compute the hash prior to upload; instead, you
could let the image upload but check the hash prior to saving -- exactly
like you're trying. Perhaps you might like to try if changing

    Digest::SHA1.hexdigest(self.image)

to

    Digest::SHA1.file(image.path).hexdigest

works for you. (It's not necessary to use `self.image` opposed to
`image` as it's a 'get'/read context, rather than a 'set'/write
context.) You might want to also ensure you're validating presence of
`:sha_1_hash`.

Peace,
tiredpixel


On 26/09/2013 13:44, Dave Castellano wrote:
> Hi,
> I am using Carrierwave in my Rails 3.x app along with Fog to store
> images on S3.  I am trying to prevent uploading of duplicate images.  I
> am a novice programmer and would appreciate any suggestions.
> 
> This is my approach:
> 
> 1. Upload file using carrierwave.
> class ImageUploader < CarrierWave::Uploader::Base
>   include CarrierWave::MiniMagick
>    storage :fog
>    include CarrierWave::MimeTypes
>    process :set_content_type
>    def store_dir
>     "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
>    end
> 
> 2. In picture model:
>  require 'digest/sha1'
>  before_validation :update_sha_1_hash
>  private
>   def update_sha_1_hash
>     self.sha_1_hash = Digest::SHA1.hexdigest(self.image)
>   end
> 
>  3.Check If the hash identifier in #2 is a duplicate of an existing
> upload
> validates_uniqueness_of :sha_1_hash
> 
> Here's the error: can't convert ImageUploader into String
> I am not sure how to direct SHA1 to the actual image file before it is
> uploaded..
> 
> Thanks,
> Dave
> 

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/52448195.6090907%40tiredpixel.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to