Модель отсутствует требуемый 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
конец
Эта работа для меня, здесь у меня есть таблицы событий с фотографией