قم بإزالة القضايا بدلا من تدمير الكائن عند: السماح_DESTROY => صحيح
-
18-09-2019 - |
سؤال
عند استخدام الجديد accepts_nested_attributes_for
في activerecord، من الممكن استخدام الخيار :allow_destroy => true
. وبعد عندما يتم تعيين هذا الخيار، أي تجزئة تحتوي على سمات متداخلة مثل {"_delete"=>"1", "id"=>"..."}
مرت ل update_attributes
سوف حذف الكائن المتداخن.
إعداد بسيط:
class Forum < ActiveRecord::Base
has_many :users
accepts_nested_attributes_for :users, :allow_destroy => true
end
class User < ActiveRecord::Base
belongs_to :forum
end
Forum.first.update_attributes("users_attributes"=>{"0"=>{"_delete"=>"1", "id"=>"42"}})
سؤال: كيف أنا - بدلا من حذف الكائنات المتداخلة عندما "_delete" => "1"
- فقط قم بإزالة الرابطة؟ (أي في الحالة أعلاه تعيين Forum_id على المستخدم إلى NIL)
السؤال مكافأة: ماذا لو كنت أريد أيضا تغيير السمة على الكائن المتداخل عند إزالة الارتباط؟ (على سبيل المثال، مثل تحديد حالة أو زمني)
المحلول
بدلا من طلب حذف المستخدم باستخدام "_delete" => '1'
, ، هل لا يمكنك فقط تحديثه باستخدام Nested_Attributes؟:
Forum.first.update_attributes("users_attributes"=> {
"0" => {
"id" => "42",
"forum_id" => "",
"state" => 'removed'
}
})
لا تنتمي إلى StackOverflow