سؤال

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

على وجه التحديد، لدي هذه النماذج:

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.

نصائح أخرى

مجال الموارد! = مجال النموذج


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

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

وضع أو ما بعد

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

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