ما هي أفضل طريقة لتطبيق gmail على غرار "التراجع" في القضبان ؟

StackOverflow https://stackoverflow.com/questions/200372

سؤال

أعتقد أنه من المهم أن يكون هناك "التراجع"طريقة علاء gmail عندما تدمير السجلات بدلا من عرض مزعج المنبثقة التي تقول،"هل أنت متأكد ؟ ".

الطريقة التي أنا قد نفذت هذا هو أن يكون "deleted_at" عمود الطابع الزمني في النموذج الذي يحصل وقتية عندما تدمير الطريقة تسمى

def destroy
  @foo = Foo.find(params[:id])
  @foo.update_attribute(:deleted_at, Time.now)
  ...
end

إلى العودة/التراجع أنا فقط وضعت نفس العمود إلى النيل

def revert
  @foo = Foo.find(params[:id])
  @foo.update_attribute(:deleted_at, nil)
  ...
end

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

يعمل بالنسبة لي وسهلة التنفيذ لكن لدي فضول أن أعرف إذا كان هناك طريقة أفضل لتنفيذ هذه الميزة ؟ ربما هناك المساعد أو الأحجار الكريمة التي توفر هذه التي لا أعرف عنها ؟

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

المحلول

هناك في الواقع بعض الإضافات التي يمكن العثور عليها في رشيقة تطوير الويب.

وهنا الروابط و ملخصات عن الإضافات التي يبدو أنها تتطابق مع الوصف الخاص بك:

  1. بمثابة بجنون العظمة:جعل السجلات النشطة "جنون العظمة". حذفها لا حذف الصف ، ولكن مجموعة deleted_at المجال.تجد طاقتها إلى تخطي السجلات المحذوفة.
  2. بمثابة لينة deletable:يوفر القدرة على لينة حذف ActiveRecord النماذج.

نصائح أخرى

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

للأسف أنا لم أكتب واحد ووقت الفراغ محدودة ، ولكن لا ينبغي أن يكون من الصعب, يجب عليه ؟

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

PaperTrail هل هذا جيد.هناك Railscast على الرغم من أنها قليلا من العمر الآن.أعرف أن هذا السؤال تم طلب الكثير من الوقت ولكن أنا تعثرت على أنه من باب الفضول و أعتقد أنني يجب أن إشارة لطيفة حتى الآن طريقة للقيام بذلك.

مسؤولية سلسلة نمط

class Action
{
  Perform(context);
  Undo(context);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top