نموذج مفقود مطلوب ATTR_ACCESSER لـ "photo_file_name" عند التحميل باستخدام paperclip و s3 على Heroku
-
01-10-2019 - |
سؤال
كان إعداد Paperclip مع S3 في بيئة Linux Dev بمثابة مفاجئة - كل شيء يعمل خارج الصندوق. ومع ذلك ، لا يمكنني تشغيله على هيروكو.
عندما أحاول إجراء تحميل ، يظهر السجل:
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_ACCESSSER لـ "photo_file_name" خطأ يختفي ، لكنه لا يزال لا يعمل. نرى سؤالي الآخر للتفاصيل. نظرًا لأنني اكتشفت أنه مع إضافة خطوط ATTR_ACCESSSER إلى النموذج الخاص بي ، تفشل التحميلات حتى على نظام DEV الخاص بي ، وأظن أن هذا ليس هو الإجابة الصحيحة.
المحلول
وجدت المشكلة: اللازمة لتحديث قاعدة البيانات.
Heroku Run Rake: DB: ترحيل
إعادة تشغيل Heroku
لقد فعلت ما اعتقدت أنه كان من الممكن أن أنجز نفس الشيء بالفعل:
Heroku Rake DB: Schema: Load
ولكن ربما لا ينجح هذا أو حدث خطأ ما في هذه العملية.
نصائح أخرى
يحدث خطأ مثل هذا إذا قمت بإنشاء نوع عمود خاطئ في الترحيل. عندما تحدد ترحيل الجدول الجديد لـ paperclip ، تحتاج إلى تحديد t.attachment :name
بدلا من t.string :name
. أو add_attachment :table, :name
عندما تضيف عمودًا جديدًا لقرص الورق في جدول موجود. والآن لا تحتاج إلى إضافة هذه السمات في 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
نهاية
هذا العمل بالنسبة لي ، هنا لدي أحداث طاولة مع الصورة