كيفية معالجة الأطفال الجدد في CONTENT_UPDATE رد الاتصال في activerecord السمات المتداخلة

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

سؤال

لدي كائن نموذجي (دعنا نقول الوالدين) مع جمعية has_many على كائن نموذج آخر (الطفل).

class Parent < ActiveRecord::Base
    has_many :children
    accepts_nested_attributes_for :children
end

class Child < ActiveRecord::Base
    belongs_to :parent
end

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

المشكلة التي كنت قيد تشغيلها هي أنه عندما أستخدم طريقة Parent.Ubdate (ID، ATT)، مضيفا أن تكون الأفتحات للأطفال الجدد، وأضافها في مجموعة ATT غير متوفرة خلال before_update (Spell.children إرجاع المجموعة القديمة) وبعد

هل هناك أي طريقة لاسترداد واحد جديد دون العبث مع قبول recepts_nester_attributes_for؟

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

المحلول

ما تصفه يعمل بالنسبة لي مع القضبان 2.3.2. أعتقد أنك قد لا تكون تعطي لأطفال الوالدين بشكل صحيح. هل يتم تحديث الأطفال بعد التحديث؟

يقبل_nester_attributes_for، كما هو مستخدم في سؤالك، يخلق كاتب _ATTRIBOTS على الوالد. لدي شعور بأنك تحاول تحديثها: الأطفال بدلا من: children_attributes.

هذا يعمل باستخدام الطرز الخاصة بك كما هو موضح وهذا التالي قبل رد الاتصال:

before_update :list_childrens_names
def list_childrens_names
  children.each{|child| puts child.name}
end

هذه الأوامر في وحدة التحكم:

Parent.create # => Parent(id => 1)
Parent.update(1, :childrens_attributes => 
  [{:name => "Jimmy"}, {:name => "Julie"}]) 

إنتاج هذا الناتج:

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