توليد مسار ملف فريد مع Polymorphic PaperClip
-
16-09-2019 - |
سؤال
أنا أركض في مشكلة مع مختلف المستخدمين الذين يقومون بتحميل الملفات بنفس الاسم الكتابة مع البرنامج المساعد Paperymorphic PaperClip. ما أود القيام به هو ضخ معرف المستخدم الحالي في عنوان URL / المسار. هل هذا ممكن؟ هل سأكون أفضل حالا لتوليد اسم عشوائي؟
فيما يلي حاليا الحالي: URL و: قيم المعلمة المسار في Asset.rb:
:url => "/assets/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/:id/:style/:basename.:extension"
ما أود أن أكون قادرا على فعله هو:
:url => "/assets/#{current_users_id}/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/#{current_users_id}/:id/:style/:basename.:extension"
المحلول
استخدام الاستيفاءات الورقية:
ملف التكوين / المهيئين / paperclip.rb:
module Paperclip
module Interpolations
def user_id(attachment, style)
current_user.id
end
end
end
خيار Has_ elefice_file:
:url => "/assets/:user_id/:id/:style/:filename"
(تم تغيير بناء الجملة من PaperClip 2.x إلى 2.3؛: المسار ليس ضروريا؛ استخدم أحدث إصدار وإلقاء نظرة على المصدر، وهي موثقة جيدا تماما.)
نصائح أخرى
في كل مرة أرى كلمة عشوائية ويتعتبط بالسلاسل، أعتقد أن GUID. ربما يمكنهم العمل من أجلك.
بالنسبة لي أنه لم يعمل byportclip.rb لكنه يعمل مثل هذا:
في فئة النموذج:
class Micropost < ApplicationRecord
Paperclip.interpolates :user_id do |attachment, style|
attachment.instance.user_id
end
has_attached_file :pic1,
:url => "/Microposts/:user_id/:style/:basename.:extension"
في حالة حدوث ذلك إذا كنت ترغب في القيام بذلك بواسطة InterplipClip، يجب عليك العثور على مسار مثل هذا: أولا ابحث عن مسار ملف GEM. اكتب هذا في المحطة الخاصة بك:
$ gem env
بعد ذلك، سيوضح لك مسارا في "- مسارات الأحجار الكريمة:" في حالتي كان هذا المسار:
:/usr/local/lib/ruby/gems/2.4.0/gems/paperclip-5.0.0/lib/paperclip
في هذا الاتجاه، يمكنك العثور على "paperclip.rb".