Paperclip - 未定义的方法'icon_file_name'

bas*_*eck 2 attachment amazon-s3 paperclip ruby-on-rails-3

我刚刚安装了Paperclip并尝试将图标附加到我的模型上.

has_attached_file :icon, 
                  :styles => { :normal => "100x100>", :format => 'png' },
                  :storage => :s3, 
                  :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
                  :url => "/icon/:slug.:extension"
                  :path => "icon/:slug.:extension"
Run Code Online (Sandbox Code Playgroud)

s3.yml包含我的桶名和两个键.

slug interpolation在config/initializers/paperclip.rb中定义为

Paperclip.interpolates('slug') do |attachment, style|
    attachment.instance.cached_slug
end
Run Code Online (Sandbox Code Playgroud)

当我调用game.icon.url时,我收到此错误:

undefined method `icon_file_name' for #<Game:0x4000f50>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我在Windows 7 x64上运行rails 3.0.4和ruby 1.9.2,如果它有任何区别的话.

sor*_*ens 7

您是否为Game模型创建了一个迁移,以便在Paperclip需要的相应字段中添加?从Github上的Paperclip文档:

class AddAvatarColumnsToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :avatar_file_name,    :string
    add_column :users, :avatar_content_type, :string
    add_column :users, :avatar_file_size,    :integer
    add_column :users, :avatar_updated_at,   :datetime
  end

  def self.down
    remove_column :users, :avatar_file_name
    remove_column :users, :avatar_content_type
    remove_column :users, :avatar_file_size
    remove_column :users, :avatar_updated_at
  end
end
Run Code Online (Sandbox Code Playgroud)

创建迁移后,需要运行rake任务来更新db: rake db:migrate