تحميل ملف إلى دليل خارج Rails Root مع Attachment_fu
-
21-09-2019 - |
سؤال
أحاول استخدام antainment_fu لتحميل الملفات إلى دليل خارج RAILS_ROOT
. أريد حفظ الملفات ~/APP_NAME/uploads/
بحيث يمكن الموافقة عليها/رفضها قبل أن تصبح متاحة للجمهور. لقد جربت التكوين التالي ل has_attachment
:
has_attachment :storage => :file_system,
:path_prefix => "~/APP_NAME/uploads/",
:max_size => 5.megabytes
لسوء الحظ ، هذا التكوين يخلق ببساطة ~/APP_NAME/uploads/
هيكل الدليل في RAILS_ROOT
. أي طريقة لحفظ الملف خارج RAILS_ROOT
?
المحلول 2
لقد وجدت طريقة بديلة تناسبني أفضل من استخدام أسماء المسارات النسبية. أضفت طريقة تسمى full_filename
إلى فصل المرفق الخاص بي:
class attachment < ActiveRecord::Base
def full_filename
return "/Users/ron/attachments/#{id}.#{file_format}"
end
end
نصائح أخرى
ربما لا تكون هذه مشكلة مرفق ، بل كيف تعالج Ruby ملف I/O وكذلك كيفية تخزين الملفات في UNIX.
على سبيل المثال ، إذا كان تطبيقك يعيش ، على سبيل المثال ، ~/user/ron/app_name
إذا قمت بتغيير الكود أعلاه:
:path_prefix => "~/APP_NAME/uploads/"
ل:
:path_prefix => "../#{RAILS_ROOT}/uploads"
سيتم تخزين الملفات في مجلد يسمى "التحميلات" في ~/user/ron/uploads. "../" يعني دليل واحد فوق جذر القضبان الحالي. إذا كنت ترغب في الصعود إلى دليلين ، فسيكون ذلك "../../" وهكذا.
ولكن هذا يعالج فقط الملاحة الهرمية. إذا كنت ترغب في إخبار المرفق FU بتخزين الملفات في دليل متشددين في نظام الملفات الخاص بك ، فيمكنك منحه مسارًا ملفًا مثل "~/user/ron/app_name/uploads الطريق هش ويمكن أن تكون نقطة ألم في المستقبل في حالة تغير متطلبات تخزين الملفات الخاصة بك.
امل ان يساعد.