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 rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
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.
No comments:
Post a Comment