ترأس ترابط تعدد الأشكال في القضبان؟
-
19-09-2019 - |
سؤال
كيف أقوم بتدمير الجمعية نفسها وترك الكائنات التي ترتبط بمفردها، مع الحفاظ على هذه المريح؟
على وجه التحديد، لدي هذه النماذج:
class Event < ActiveRecord::Base
has_many :model_surveys, :as => :surveyable, :dependent => :destroy, :include => :survey
has_many :surveys, :through => :model_surveys
end
class ModelSurvey < ActiveRecord::Base
belongs_to :survey
belongs_to :surveyable, :polymorphic => true
end
class Survey < ActiveRecord::Base
has_many :model_surveys
end
هذا يقول أن الحدث هو :surveyable
(ModelSurvey belongs_to Event
). سؤالي هو، دون الحاجة إلى إنشاء ModelSurveysController
, ، كيف أقوم بتدمير ModelSurvey
, ، مع ترك Event
و Survey
وحده؟
شيء مع map.resources :events, :has_many => :model_surveys
ب لست متأكدا تماما ما يجب القيام به في هذه الحالة. ما يجب أن يحدث مع الطرق، وما الذي يحتاج إلى حدوثه في وحدة التحكم؟ آمل أن يبدو عنوان URL شيئا مثل هذا:
/events/:title/model_surveys/:id
شكرا لمساعدتكم، انس
المحلول
في القضبان 2.3 لديك accepts_nested_attributes_for
والتي ستتيح لك تمرير مجموعة من النماذج إلى الحدث المعني. إذا سمحت بالتدمير من خلال إعلان السمات المتداخل، فستتمكن من المرور event[model_surveys][1][_destroy]=1
وسيتم إزالة الجمعية. تفحص ال مستندات API.
نصائح أخرى
مجال الموارد! = مجال النموذج
مجال وحدة التحكم ليس هو نفسه من النماذج. من الجيد تماما تحديث نماذج متعددة عن طريق تغيير حالة المورد.
في حالتك، تعني القيام بوضع أو نشر إما الحدث أو المسح الذي يحتوي على قائمة معرفات الآخر. نموذج واحد سيقوم بتحديث الارتباط.
وضع أو ما بعد
بعض الناس (ولكن ليس روي الميدان) نعتقد أنه يجب عليك استخدام وضعي لتحديث المورد وتوفير جميع الولاية مرة أخرى، يشعر الآخرون أن وظيفة مع الحالة الجزئية (علاء التصحيح) كافية.