سؤال

لدي النموذج:

  • User -1---n- Transaction(amount,description, date)
  • User -1---n- TransactionImport -1---n- TransactonImportField(name,value)

(تطبيق تتبع النفقات الشخصية).

ما أريد تحقيقه هو:

  1. يفتح المستخدم عنوان URL ويصرخ CSV مع قائمة المعاملات.
  2. يقدم المستخدم ذلك.
  3. يقوم النظام باستخراج البيانات من CSV إلى TransactionImport (صف) + TransactionImportField (زنزانة).
  4. يمكن للمستخدم اختيار العمود الذي يعني ما (المبلغ ، الوصف ، التاريخ) من البيانات المستوردة في TransactionImport(Field).
  5. المستخدم انقر فوق حفظ ونقل النظام TransactionImport في الصفقة.

ما لا يمكنني الحصول عليه على صواب هو حقيقة أن الخطوة 3 تنشئ سجلات متعددة من TransactionImport (وما يتصل بها TransactionImportField).

هكذا POST /transaction_imports?csv=abcd من المتوقع أن ينتج سجلًا واحدًا إذا كنا سنكون مريحين. لكن من المفترض أن يكون الرمز شيئًا كهذا:

# TransactionImportsController
def create
  result = TransactionImports.parse(params[:csv])
  flash[:notice] = result.message
  redirect_to transaction_imports_path
end

ربما أقترب من المهمة من زاوية خاطئة لأنني أشعر أن التنفيذ لا يتناسب مع TP وراثي _resources.

هل يمكن أن تنصح ما هي الطريقة الأكثر تقليدية لتنفيذ هذا؟

شكرًا،
Dmytrii.

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

المحلول

لا يتوقع REST/HTTP أي توقع أن تنشر POST سيخلق سجلًا واحدًا فقط. ربما يكون سلوك القضبان الافتراضي ، لكن يجب ألا تقيد التصميم الخاص بك بسبب ذلك.

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