如何通过rails中的输入标记删除多个关系?
我有一个名为invoice的模型。
has_many :expenses
我正在尝试删除发票的所有关联模型:
input name="invoice[expense_ids][]" value=""
但它似乎无法奏效。输入标记在更新操作中为update_attributes函数设置正确格式的参数的正确方法是什么?
答案 0 :(得分:1)
我是如何做到的是在控制器中
invoice.expense_ids = [] if invoice.persisted?
invoice.update_attributes(params[:invoice])
基本上会在更新记录之前删除任何费用关联,因此现有的会被添加回来,如果没有传入,它将是空白的。
更长的方法是基本上删除数组中不再存在的任何
ids = invoice.expense_ids
ids = ids.keep_if{|i|, params[:invoice][:expense_ids].include?(i)}
invoice.expense_ids = ids