HerokuでPaperClipとS3を使用してアップロードするときに「Photo_file_name」に必要なattr_accessorが欠落しているモデル
-
01-10-2019 - |
質問
Linux Dev環境でS3でPaperClipをセットアップすることはスナップでした。すべてが箱から出しています。しかし、私はそれを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'):
このエラーを参照するブログ投稿を1つ見つけましたが、これを私のモデルに追加すると言われました。
attr_accessor :photo_file_name
attr_accessor :photo_content_type
attr_accessor :photo_file_size
attr_accessor :photo_updated_at
それは確かにそれを作ります 「photo_file_name」の必要なattr_accessorの欠落モデル エラーは消えますが、それでも機能しません。見る 私の他の質問 詳細については。私のモデルにattr_accesserのラインが追加されたことで、私の開発システムでもアップロードが失敗することを理解したように、それは正しい答えではないと思います。
解決
問題が見つかりました:データベースを更新するために必要です。
Heroku Run Rake:DB:移行
Herokuが再起動します
私はすでに同じことを成し遂げたと思っていたことをしました:
Heroku Rake DB:スキーマ:負荷
しかし、おそらくそれはうまくいかないか、その過程で何かがうまくいかなかったでしょう。
他のヒント
このようなエラーは、移行で間違った列タイプを作成すると発生します。 PaperClipの新しいテーブル移行を定義する場合、指定する必要があります t.attachment :name
のInsted t.string :name
. 。または add_attachment :table, :name
存在するテーブルに新しいPaperClip列を追加するとき。そして今、あなたはこれらの属性をに追加する必要はありません attr_accessor
モデルで。
まあ、このメッセージは列が欠落しているためです。列を作成する移行を作成してみてください。
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
終わり
私のためにこの作品、ここに写真が入ったテーブルイベントがあります