سؤال

وأواجه نموذج معقد جدا مع العديد من المجالات، والجمعيات has_many والصور التي أضافها image_column الخ ...

وسيتم إضافة كائن جديد من شكل متعدد الصفحة (8 خطوات) - كيف يجب أن تنجز التحقق من صحة وانتشار بين تلك الخطوات

وأعتقد validation_group يمكن أن تكون مفيدة لتحديد التصديقات لكل خطوة، وماذا عن التصميم العام؟

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

المحلول

لالتصميم العام، قد ترغب في النظر في مفهوم الطبقة مقدم (جاي الحقول تعرف عليه في دخوله بلوق <لأ href = "http://blog.jayfields.com/2007/03/rails-presenter -pattern.html "يختلط =" noreferrer "> القضبان: مقدم نمط ) باعتبارها وسيلة للحفاظ على حدات التحكم الخاصة بك رقيقة والآراء غبي عند التعامل مع نماذج معقدة / متعددة

نصائح أخرى

هل يمكن أن يكون سلسلة من الأساليب، على سبيل المثال، step_1، step_2، ولكل واحد الشيكات أن نرى أن تم تقديم البيانات اللازمة من الخطوة السابقة. هل يمكن تخزين البيانات في الدورة بحيث، على سبيل المثال، خطوة 3 لا يزال الحصول على جميع البيانات التي تم جمعها وتحليلها في الخطوة 1. وفي الخطوة الأخيرة، وطرح كافة البيانات التي قمت بتخزينها في الدورة بالإضافة إلى البيانات من الخطوة قبل الأخيرة للاستخدام، وإنشاء صف جديد في قاعدة البيانات أو مهما كنت جمع البيانات ل. إذا كان المستخدم عبث تصل خطوة، توجيهها إلى الخطوة السابقة وملء النموذج بالنسبة لهم مع البيانات التي لم ملء. مثلا إذا كان المستخدم عبث تصل الخطوة 2 ويقدم نموذج مما أدى إلى الخطوة 3، وقبض المشكلة في طريقة step_3 الخاص بك، إعادة توجيه المستخدم إلى طريقة step_2، وتأكد من أن عناصر النموذج في الخطوة 2 هي معبأة سلفا.

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

ويمكنك أيضا أن تسمح للمستخدمين للذهاب إلى الخطوات السابقة (على سبيل المثال السماح للمستخدم بالعودة إلى الخطوة 3 عندما يكون في الخطوة 5).

ويقول الخطوة الأولى لها شكل مع 'اسم' الميادين و "البريد الإلكتروني". في طريقة step_2 الخاص بك، يجب التحقق من أن params[:name] وparams[:email] صدرت وصالحة. تخزين تلك في الدورة أو صف قاعدة البيانات، ولكن الذي اخترته. ثم في الخطوة 2، لديك نموذج مع "عمر" الميادين و "الجندر". في طريقة step_3 الخاص بك، يجب التحقق من أن صدرت params[:age] وparams[:gender] وصالحة، وتحتاج أيضا إلى التأكد من أن المستخدم قد أكمل الخطوة 1، لمنع المستخدم من إدخال URL للوصول إلى الخطوة 3 مباشرة. وهلم جرا.

class Campaign < ActiveRecord::Base
    with_options(:if => lambda { |campaign| campaign.on_or_past_step(:spam_can) }) do |spam_can|
      spam_can.validates_associated  :spam_can
      spam_can.validates_presence_of :spam_can
    end
  def on_or_past_step
   :
   :
  end
end

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

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