0

如何通过 rails 中的输入标签删除有很多关系?

我有一个名为 invoice 的模型。

has_many :expenses

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

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

但这似乎不起作用。输入标签在更新操作中为 update_attributes 函数提供正确格式的参数的正确方法是什么?

4

1 回答 1

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
于 2013-03-26T20:34:41.120 回答