Question

My User model:

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => { :profile => "200x200>", :collab => "300x200>", :msg => "50x50>" }, :default_url => "missing.png"
  validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
  ...

I have just added the :msg and :profile styles and I'm trying to refresh them so they show up properly in my views.

I've tried running:

rake paperclip:refresh CLASS=User

and I get this error:

rake aborted!
ArgumentError: wrong number of arguments (0 for 1)
/home/jrile/rails/cs480/app/models/user.rb:44:in `hash'
/home/jrile/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment_registry.rb:42:in `names_for'
/home/jrile/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment_registry.rb:16:in `names_for'
/home/jrile/rails/cs480/lib/tasks/paperclip.rake:15:in `obtain_attachments'

Here's line 44 of user.rb (not sure why this has anything to do with paperclip)

def User.hash(token)
    Digest::SHA1.hexdigest(token.to_s)
end

I was trying to add an avatar following railstutorial.org.

EDIT: Also, in all my views where I'm trying to display the avatar, it's displaying ":msg" even if I'm trying to display one of the other two. I.E.,

<%= image_tag user.avatar.url(:profile) %>

is showing the 50x50 avatar.

Was it helpful?

Solution

For the first issue, from this SO question

You shouldn't override ruby core methods like object#hash they are made for specific reasons and changing their behavior could cause unexpected results , apparently later on the tutorial this will change to:

def User.digest(token)
  Digest::SHA1.hexdigest(token.to_s)
end
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top