我有一个表单,该表单通过collection_check_boxes将一组复选框ID传递给控制器。每次可以选中或取消选中其中一些复选框。未检查的记录将被删除,我放置的所有before_destroy回调都将被忽略。找到了解释该行为的API条目:
collection = objects通过适当地删除和添加对象来替换集合内容。如果:through选项为true,则由于删除是直接的,因此会触发join模型中的回调(除destroy回调之外)。
牢记这一点,我如何知道未检查哪些ID?我至少想告知用户哪些记录被销毁了。
查看
<%= f.collection_check_boxes(:condition_ids, target_participant.encounter.ruleset.conditions, :id, :name) do |b|
<li>
<%= b.check_box + " " + b.label(class: "p3 damage-model-checkbox-label") do %>
<%= b.text %>
<% end %>
</li>
<% end %>
控制器
def update
@target_participant.update(participant_params)
end