2010-08-27 16 views
10

Configurer paperclip avec S3 dans mon environnement de développement linux était un jeu d'enfant - tout fonctionne hors de la boîte. Cependant, je ne peux pas le faire fonctionner sur Heroku.modèle manquant requis attr_accessor pour 'photo_file_name' lors du téléchargement avec trombone et S3 sur heroku

Lorsque je tente de faire un téléchargement, le journal indique:

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'): 

J'ai trouvé un billet de blog qui faisait référence à cette erreur, et il a dit ajouter à mon modèle:

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

Cela fait en effet le modèle manquant requis attr_accessor pour 'photo_file_name' erreur disparaître, mais cela ne fonctionne toujours pas. Voir my other question pour plus de détails. Comme je l'ai compris, avec les lignes attr_accessor ajoutées à mon modèle, les téléchargements échouent même sur mon système de développement, je suppose que ce n'est pas la bonne réponse.

Répondre

30

Trouvé le problème: nécessaire pour mettre à jour la base de données. run

heroku rake: db: migrate

heroku restart

je l'avais fait ce que je pensais avoir accompli la même chose déjà:

heroku rake db: schéma : charge

mais peut-être t chapeau ne fonctionne pas ou quelque chose s'est mal passé dans le processus.

+0

Vous pouvez rencontrer des problèmes en cours d'exécution. 'heroku run rake: db: migrate' Si vous le faites, exécutez plutôt' heroku run rake db: migrate' Puis 'heroku restart' – kearney927

+0

N'utilisez pas cette ligne: heroku rake db: schema: load. Cela supprimera toutes vos données des tables! Faites une sauvegarde si vous voulez y parvenir! – EM923

0

Eh bien, ce message semble être dû au fait que les colonnes sont manquantes. Essayez de créer une migration créant les colonnes:

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 

fin

Ce travail pour moi, ici, j'ai des événements de table avec photo

3

erreur comme cela se produit si vous créez le type de mauvaise colonne de la migration. Lorsque vous définissez une nouvelle migration de table pour trombone, vous devez spécifier t.attachment :name insted of t.string :name. Ou add_attachment :table, :name lorsque vous ajoutez une nouvelle colonne de trombone dans la table existante. Et maintenant, vous n'avez pas besoin d'ajouter ces attributs dans attr_accessor dans le modèle.