يتم تحديثات الطفل المتداخلة فقط إذا تغير الوالد
-
21-09-2019 - |
سؤال
في هذا الفيديو (10 ثانية) يمكنك أن ترى أن السمة المتداخلة يتم تحديثها فقط إذا تم تغيير نموذج الوالدين.
باستخدام Rails 3.0.0.beta و المشروع الكامل على جيثب.
ملخص النماذج والشكل:
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks
end
class Task < ActiveRecord::Base
belongs_to :project
has_many :assignments
accepts_nested_attributes_for :assignments
end
class Assignment < ActiveRecord::Base
belongs_to :task
end
form_for(@project) do |f|
Project: f.text_field :name
f.fields_for :tasks do |task_form|
Task: task_form.text_field :name
task_form.fields_for :assignments do |assignment_form|
Assignment: assignment_form.text_field :name
end
end
f.submit
end
المحلول
EDIT2: نفس الرمز يعمل بشكل مثالي في Rails 2.3.5. يبدو أنه خطأ في إصدار بيتا.
تعديل: كتبت اختبارًا في تطبيقي لمحاكاة هذا. ها هي النتيجة.
test "should update empresa" do
addr = empresas(:ufba).address
put_with users(:s_one), :update, :id => empresas(:ufba).to_param,
:empresa => { :address_attributes => {:id => empresas(:ufba).address.to_param,
:city => "Feira de Santana"}}
assert_not_nil assigns(:empresa)
assert_not_same addr, assigns(:empresa).address, "Endereco nao foi atualizado"
assert_redirected_to empresa_path(assigns(:empresa))
end
يعمل بدون أخطاء.
لا تنتمي إلى StackOverflow