modello manca richiesto attr_accessor per 'photo_file_name' durante il caricamento con graffetta e S3 su Heroku
-
01-10-2019 - |
Domanda
Impostazione graffetta con S3 nel mio ambiente linux dev è stato un gioco da ragazzi - tutto funziona out of the box. Tuttavia, non riesco a farlo funzionare su Heroku.
Quando provo a fare un upload, gli spettacoli di registro:
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'):
Ho trovato un post sul blog che fa riferimento questo errore, e ha detto di aggiungere questo per il mio modello:
attr_accessor :photo_file_name
attr_accessor :photo_content_type
attr_accessor :photo_file_size
attr_accessor :photo_updated_at
Ciò in effetti rendono il modello mancante attr_accessor richiesto per 'photo_file_name' Errore di andare via, ma non lo fa ancora lavoro. Vedere mia altra domanda per i dettagli. Come ho capito che con le linee attr_accessor aggiunti al mio modello gli upload non riescono nemmeno sul mio sistema dev, ho il sospetto che non è la risposta giusta.
Soluzione
Trovato il problema:. Necessario per aggiornare il database
Heroku gestita rake: db: migrate
Heroku restart
I aveva fatto quello che ho pensato che avrebbe compiuto la stessa cosa già:
Heroku rake db: schema: load
ma forse non funziona o qualcosa è andato storto nel processo.
Altri suggerimenti
errore come questo si verifica se si crea sbagliato tipo di colonna nella migrazione. Quando si definisce nuova migrazione tavolo per graffetta, è necessario specificare t.attachment :name
posto della t.string :name
. O add_attachment :table, :name
quando si aggiunge nuova colonna graffetta nella tabella esistito. E ora non c'è bisogno di aggiungere questi attributi in attr_accessor
nel modello.
Bene, questo messaggio sembra essere perché le colonne che manca. Prova creare una migrazione creare le colonne:
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
end
Questo lavoro per me, qui ho un tavolo di eventi con foto