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

Настроить скрепку с помощью S3 в моей среде разработки Linux не составило труда — все работает из коробки. Однако я не могу заставить его работать на Heroku.

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

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


person eksatx    schedule 27.08.2010    source источник


Ответы (3)


Нашел проблему: нужно обновить базу.

героку запустить грабли: db: мигрировать

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

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

граблей heroku db:схема:загрузка

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

person eksatx    schedule 27.08.2010
comment
У вас могут возникнуть проблемы с запуском. heroku run rake:db:migrate Если да, запустите это heroku run rake db:migrate Затем heroku restart - person kearney927; 17.06.2014
comment
Не используйте эту строку: heroku rake db:schema:load . Это удалит все ваши данные из таблиц! Сделайте резервную копию, если вы хотите добиться этого! - person NN796; 02.09.2015

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

person jarosluv    schedule 13.05.2014

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

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

конец

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

person Alexandre Magno Teles Zimerer    schedule 27.05.2013