أفضل الممارسات من أجل الحفظ التلقائي المسودات؟

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

  •  22-08-2019
  •  | 
  •  

سؤال

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

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

المحلول

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

نصائح أخرى

وأنا لم صياغة على الطريق ويكيبيديا: I حفظ النسخة الأولى، وكل تعديل في حفظها (على أساس الوقت أو الأمر المستخدم واضح) كإصدار المقبل. أي بعد. نشر يمكنك حذف مشروع الرسم البياني - أو لا

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

وهذا ينطبق على أكثر من رسائل البريد الإلكتروني ...

ولقد غيرت رأيي في هذا واحد. أفضل طريقة هي استخدام عمود is_draft في الجدول الخاص بك وتخزين كل المسودات والكيانات صالحة في نفس الجدول. وهذا له ميزة للكيان الحفاظ على نفس معرف حتى لو كان التبديل داخل وخارج مشروع الدولة (قد ترغب في تحريره بعد حفظه، ولكن مؤقتا إزالة القيمة المطلوبة). فإنه يكون مربكا للمستخدمين إذا كانوا التعاون في نفس الوثيقة والهوية أبقى التغير، amirite؟

وستستخدم is_draft = 1 لإيقاف قواعد التحقق من صحة ORM، التحقق من صحة الزناد أو تحقق القيود للسماح كائن غير صالح للحفظ. نعم، كنت قد المرجح أن تسمح الحقول قيم الفارغة في الجدول الخاص بك.

والعملية: محاولة حفظ الكائن. فشل التحقق من الصحة. وضع is_draft = 1 ومحاولة الحفظ مرة أخرى. فإنه يحفظ. وضع "مشروع" كبيرة على الشاشة في مكان ما:)

والمستخدم بتعبئة المعلومات المطلوبة. محاولة حفظ الكائن. يمر التحقق من الصحة. وضع is_draft = 0. فإنه يحفظ.

والآن، بخصوص البريد الإلكتروني وبلوق وظيفة، الخادم الخاص بك لا ينبغي محاولة لإرساله أو بعد ذلك على الفور ما لم ينقر المستخدم على زر حفظ / آخر، ولكن هذا هو مسألة مختلفة حقا.


والإجابة OLD

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

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

والزائفة SQL:

create table draft  
id int primary key auto increment,  
entity varchar(64) not null comment 'this way you can find all drafts of say type Email',  
contents longblob not null,  
modified timestamp comment 'this way you can sort by newer drafts'  
modified_by int not null foreign key to user.id comment 'this way you can filter by the user\'s drafts'

ويمكن أيضا النظر في الجدول draft_file لتخزين المرفقات أو الصور للمشروع، وتكون قادرة على الوصول إليها بشكل فردي:

create table draft_file  
id int primary key auto increment,   
draft_id int not null foreign key to draft.id on delete cascade,  
size int not null comment 'bytes',  
mime_type varchar(64) not null,  
file_name varchar(255) not null,  
contents longblob,  
thumbnail blob comment 'this could be an icon for files/documents' 

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

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

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

وهذا يسمح للمسودات طويلة الأجل، على غرار جوجل تحميل المرفقات، مع الحفاظ على سلامة الجدول الكيان الحقيقي.

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