私のユーザーモデル:
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/
...
:msg スタイルと :profile スタイルを追加したばかりで、ビューに適切に表示されるように更新しようとしています。
実行してみました:
rake paperclip:refresh CLASS=User
そして私はこのエラーを受け取ります:
rake aborted!
ArgumentError: wrong number of arguments (0 for 1)
/home/rails/cs480/app/models/user.rb:44:in `hash'
/home/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment_registry.rb:42:in `names_for'
/home/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment_registry.rb:16:in `names_for'
/home/rails/cs480/lib/tasks/paperclip.rake:15:in `obtain_attachments'
これは user.rb の 44 行目です (なぜこれがペーパークリップと関係があるのかわかりません)
def User.hash(token)
Digest::SHA1.hexdigest(token.to_s)
end
railstutorial.orgに従ってアバターを追加しようとしていました。
編集:また、アバターを表示しようとしているすべてのビューでは、他の2つのうちの1つを表示しようとしている場合でも、「:msg」が表示されます。つまり、
<%= image_tag user.avatar.url(:profile) %>
は 50x50 のアバターを表示しています。
最初の問題については、このSOの質問から
object#hash のような Ruby のコア メソッドをオーバーライドすべきではありません。これらのメソッドは特定の理由で作成されており、その動作を変更すると予期しない結果が生じる可能性があります。どうやらチュートリアルの後半でこれが次のように変更されるようです。
def User.digest(token)
Digest::SHA1.hexdigest(token.to_s)
end