Rails表单删除有很多关系

时间:2013-03-26 20:30:41

标签: ruby-on-rails

如何通过rails中的输入标记删除多个关系?

我有一个名为invoice的模型。

has_many :expenses

我正在尝试删除发票的所有关联模型:

input name="invoice[expense_ids][]" value=""

但它似乎无法奏效。输入标记在更新操作中为update_attributes函数设置正确格式的参数的正确方法是什么?

1 个答案:

答案 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