2010-08-27 19 views
10

Das Einrichten der Büroklammer mit S3 in meiner Linux-Entwicklungsumgebung war ein Kinderspiel - alles funktioniert sofort. Ich kann es jedoch nicht auf Heroku schaffen.Modell fehlt erforderlich attr_accessor für 'photo_file_name' beim Hochladen mit Büroklammer und S3 auf heroku

Wenn ich versuche, einen Upload zu tun, das Protokoll zeigt:

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

ich einen Blog-Eintrag gefunden, der diesen Fehler verwiesen wird, und es wird gesagt, dies zu meinem Modell hinzuzufügen:

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

Das macht tatsächlich das Modell fehlt erforderlich attr_accessor für 'Foto_Dateiname' Fehler weggehen, aber es funktioniert immer noch nicht. Details siehe my other question. Da ich herausgefunden habe, dass mit den attr_accessor-Zeilen, die meinem Modell hinzugefügt wurden, die Uploads sogar auf meinem Dev-System fehlschlagen, vermute ich, dass das nicht die richtige Antwort ist.

Antwort

30

Das Problem wurde gefunden: Zum Aktualisieren der Datenbank erforderlich.

Heroku laufen rake: db: wandern

Heroku

Neustart hatte ich getan, was ich dachte, das bereits elbe erreicht hätte:

Heroku rake db: schema : laden

aber vielleicht t Hut funktioniert nicht oder etwas ging dabei schief.

+0

Möglicherweise treten Probleme auf. 'heroku run rake: db: migrieren' Wenn Sie dies tun, führen Sie diese anstelle 'heroku run rake db: migrieren' Dann 'heroku restart' – kearney927

+0

Verwenden Sie nicht diese Zeile: heroku Rake db: schema: load. Dies wird alle Ihre Daten aus Tabellen löschen! Erstellen Sie eine Sicherungskopie, wenn Sie dies erreichen möchten! – EM923

0

Nun, diese Nachricht scheint zu sein, weil die Spalten fehlen. Versuchen Sie erstellen eine Migration Erstellen der Spalten:

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 

Ende

Diese Arbeit für mich, hier habe ich eine Tabelle Ereignisse mit Foto

3

Fehler wie dies der Fall ist, wenn Sie falsche Spalte Typ in der Migration erstellen. Wenn Sie eine neue Tabellenmigration für Büroklammer definieren, müssen Sie t.attachment :name anstelle von t.string :name angeben. Oder add_attachment :table, :name, wenn Sie eine neue Büroklammerspalte in existierender Tabelle hinzufügen. Und jetzt müssen Sie diese Attribute nicht in attr_accessor im Modell hinzufügen.