كيفية معالجة الأطفال الجدد في CONTENT_UPDATE رد الاتصال في activerecord السمات المتداخلة
-
19-09-2019 - |
سؤال
لدي كائن نموذجي (دعنا نقول الوالدين) مع جمعية 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