سؤال

أنا حاليا باستخدام رهيبة مرفق-فو المساعد القضبان التطبيق ، ولكن كما مبتدئا المطور, لم يسبق لي أن واجهت سيناريو مثل واحد لقد وجدت نفسي في.

أساسا أنا باستخدام مرفق-فو المساعد على مستويين.

  1. هو الآلهة المستخدم في فئة المستخدم.
  2. هو السماح ملف المرفقات (ملفات pdf, الخ) في نظام الرسائل.

سؤالي هو ما هو أفضل استخدام الممارسة سيكون في هذه الحالات أن تبقى الجافة, واضحة ومتسقة.

ومن الواضح أنه لا معنى لتحديد وتنفيذ البرنامج المساعد في كل الطبقات ، ولكن هناك شيء عميق غريبا بالنسبة لي (ربما لا أساس لها من الصحة) على وشك المضي قدما و وضع كل شيء في التقوى فئة التطبيق.

هل هناك شيء بين بين, أو هو الأصل الطبقة المتوسطة.

وذلك بفضل!

هل كانت مفيدة؟

المحلول

أنا سوف تميل إلى استخدام فئة الأم مع subclassing عن الطرق المختلفة التي كنت تنوي فعلا استخدام المرفقات في التطبيق الخاص بك.قد لا يكون DRYest الحلول المتاحة ، ومع ذلك ، فإنه يفسح المجال نمطا منطقيا بشكل جيد.

نصائح أخرى

ما الجافة المسألة مع تحديد attachment_fu إعدادات مرتين ؟

إلا الملفات من نفس النوع و يتم تخزينها في نفس المكان ، لن يتم تكرار أي شيء في التكوين.

بالتأكيد, سيكون لديك اثنين من has_attachment الإعلانات ولكن الخيارات سوف تختلف في الغالب (واحد الإعلان عن الآلهة الخاص بك وغيرها pdf الخاصة بك إلخ.

99.99% من قانون للتعامل مع المرفقات سوف يدفن في attachment_fu يبس ، التكوين الخاص بك رمز يجب أن تكون جافة جدا بشكل افتراضي =)

هو "الاستعانة بمصادر خارجية" دعم الرمزية تماما غرفتر الخيار ؟ هناك بعض القضبان الإضافات التي سيتم عرض الصور الرمزية استضافته غرفتر.قد لا تحتاج إلى إعادة اختراع العجلة هناك.

ما wfarr يصف سيكون جدول واحد الميراث, وهو ما أنا حاليا في هذا الوضع.لدي طاولة واحدة من أجل الأصول الذي يحتوي على كل ما يلزم attachment_fu الأعمدة ، بالإضافة إلى مبلغ إضافي عمود يسمى النوع ، والتي سوف تعقد الفعلية اسم النموذج.لدي نموذج الأصول نماذج إضافية محددة تحميل أنواع ترث من الأصول:

الأصول.rb:

class Asset < ActiveRecord::Base
  ... attachment_fu logic ...
end

الصورة الرمزية.rb:

class Avatar < Asset
  ... avatar specific attachment_fu logic ...
end

pdf.rb:

class PDF < Asset
  ... PDF specific attachment_fu logic ...
end

لا يمكنك استخدام متعددة الأشكال الجمعيات?

أنا على وشك ضرب هذا في بلدي التطبيق مع attachment_fu ، لذلك لست متأكدا بالضبط على attachment_fu ، ولكن المدرسة القديمة الملف العمود المساعد, وأود أن استخدام الأشكال الجمعيات.

بلدي "ملف" نموذج ليكون:

    class FileUpload < ActiveRecord::Base
      belongs_to :fileable, :polymorphic => true
      file_column :name
    end

ثم أي النماذج التي في حاجة إلى الملف المرفق سوف يكون مثل:

    class Company < ActiveRecord::Base
      has_many :file_uploads, :as => :fileable
    end

الملف عمود ليست جيدة بعد الآن كما borks على سفاري 3.x و لم يعد الحفاظ عليها.كانت لطيفة وبسيطة على الرغم من...آه على الأيام الخوالي...

ما يستحق أعتقد باتريك بيركلي قامت بعمل جيد في التعامل مع مرفقات متعددة من خلال مشبك المساعد.إنه المبينة عمله هنا:

http://gist.github.com/33011

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top