Скрепка - неопределенный метод 'имя_файла_файла' - PullRequest
2 голосов
/ 01 марта 2011

Я только что установил скрепку и пытаюсь прикрепить иконку к моей модели.

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 / initializers / paperclip.rb как

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

Когда я вызываю game.icon.url, я получаю эту ошибку:

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

Что я делаю не так?

Я использую rails 3.0.4 и ruby ​​1.9.2 в Windows 7 x64, если это имеет какое-либо значение.

Ответы [ 4 ]

7 голосов
/ 01 марта 2011

Вы создали миграцию для своей модели игры, чтобы добавить в соответствующие поля, которые нужны Paperclip?Из документации Paperclip на 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

3 голосов
/ 02 мая 2013

Вы можете просто запустить - rails generate paperclip game icon
, и он сгенерирует миграцию для вас.

2 голосов
/ 13 августа 2013

Я совершил ту же ошибку, забыл добавить миграцию базы данных.

Вот отличная статья о том, как это сделать , даже если это на 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
0 голосов
/ 03 ноября 2011

У меня была похожая проблема, но она работала, когда я запускал ее в браузере, но некоторые из моих тестов не выполнялись. Вы помогли мне понять, что я перенес свою основную базу данных разработки, но мне не удалось выполнить rake db: migrate test . Как только я это сделал - проблема исчезла.

...