2011-02-28 68 views
2

我剛剛安裝了回形針,並嘗試將圖標附加到我的模型中。回形針 - 未定義的方法'icon_file_name'

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" 

s3.yml包含我的存儲桶名稱和兩個密鑰。

塞插在config /初始化/ paperclip.rb定義爲

Paperclip.interpolates('slug') do |attachment, style| 
    attachment.instance.cached_slug 
end 

當我打電話game.icon.url,我得到這個錯誤:

undefined method `icon_file_name' for #<Game:0x4000f50> 

我在做什麼錯誤?

我在Windows 7 x64上運行rails 3.0.4和ruby 1.9.2,如果它有什麼區別的話。

回答

7

您是否爲您的遊戲模型創建了遷移以添加回形針所需的相應字段?從Paperclip documentation在Github上:

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 

您已經創建了一個遷移後,您需要運行rake任務來更新你的數據庫:rake db:migrate

+1

protip:你可以通過運行'p aperclip'生成器 – 2011-03-01 00:28:27

+0

哇,我不認爲這是必要的,因爲我使用slu((它已經存在於表中)的文件名爲 – bassneck 2011-03-01 00:35:50

+0

,這與數據最終被存儲在哪裏無關。 Paperclip使用綁定到模式的ActiveRecord模型。 – sorens 2011-03-01 00:57:02

0

我也有類似的問題,但它是我的工作時,在瀏覽器中運行它,但是我的一些測試失敗了。你幫我意識到我已經遷移了我的主開發數據庫,​​但是我沒有做到rake db:migrate test。一旦我做到了 - 問題就消失了。

3

您可以簡單地運行 - rails generate paperclip game icon
它會爲您生成遷移。

2

我犯了同樣的錯誤,忘記添加數據庫遷移。

這裏是這樣 even though it is on Heroku.

你可以像下面這樣運行

的遷移創建遷移文件

rails g migration AddAvatarToUser 

然後編輯該文件以下列

一個偉大的文章
class AddAvatarToUser < ActiveRecord::Migration 
    def self.up 
    add_attachment :users, :avatar 
    end 

    def self.down 
    remove_attachment :users, :avatar 
    end 
end 
相關問題