Модель отсутствует требуемый attr_accessor для 'photo_file_name' при загрузке с помощью paperclip и S3 на heroku

Настройка скрепки с S3 в моей среде linux dev была оснащена - все работает из коробки. Однако я не могу заставить его работать на Героку.

Когда я пытаюсь выполнить загрузку, журнал показывает:

Processing ItemsController#create (for 72.177.97.9 at 2010-08-26 16:35:14) [POST]  
  Parameters: {"commit"=>"Create", "authenticity_token"=>"0Hy3qvQBHE1gvFVaq32HMy2ZIopelV0BHbrSeHkO1Qw=", "item"=>{"photo"=>#<File:/home/slugs/270862_4aa601b_4b6f/mnt/tmp/RackMultipart20100826-6286-1256pvc-0>, "price"=>"342", "name"=>"a new item", "description"=>"a new item", "sold"=>"0"}}

Paperclip::PaperclipError (Item model missing required attr_accessor for 'photo_file_name'):

Я нашел одно сообщение в блоге, которое ссылается на эту ошибку, и сказал, чтобы добавить это в мою модель:

attr_accessor :photo_file_name
attr_accessor :photo_content_type
attr_accessor :photo_file_size
attr_accessor :photo_updated_at

Это действительно делает пропущенную модель необходимой attr_accessor для ошибки 'photo_file_name', но она по-прежнему не работает. Подробнее см. мой другой вопрос. Поскольку я понял, что с добавленными в мою модель линиями attr_accessor, загрузка не работает даже в моей системе dev, я подозреваю, что это неправильный ответ.

Ответ 1

Обнаружена проблема: необходимо обновить базу данных.

heroku run rake: db: migrate

перезагрузка героя

Я сделал то, что, как я думал, уже достигло бы того же:

heroku rake db: schema: load

но, возможно, это не работает или что-то пошло не так в процессе.

Ответ 2

Ошибка, подобная этому, возникает, если при миграции создается неправильный тип столбца. Когда вы определяете новую миграцию таблицы для paperclip, вам нужно указать t.attachment :name insted t.string :name. Или add_attachment :table, :name, когда вы добавляете новый столбец paperclip в существующую таблицу. И теперь вам не нужно добавлять эти атрибуты в attr_accessor в модели.

Ответ 3

Ну, это сообщение, похоже, связано с отсутствием столбцов. Попробуйте создать миграцию, создав столбцы:

class AddPhotoToEvent < ActiveRecord::Migration
  def change
    add_column :events, :photo_file_name,    :string
    add_column :events, :photo_content_type, :string
    add_column :events, :photo_file_size,    :integer
    add_column :events, :photo_updated_at,   :datetime
  end

конец

Эта работа для меня, здесь у меня есть таблицы событий с фотографией