如何通过 rails 中的输入标签删除有很多关系?
我有一个名为 invoice 的模型。
has_many :expenses
我正在尝试删除发票的所有关联模型:
input name="invoice[expense_ids][]" value=""
但这似乎不起作用。输入标签在更新操作中为 update_attributes 函数提供正确格式的参数的正确方法是什么?
如何通过 rails 中的输入标签删除有很多关系?
我有一个名为 invoice 的模型。
has_many :expenses
我正在尝试删除发票的所有关联模型:
input name="invoice[expense_ids][]" value=""
但这似乎不起作用。输入标签在更新操作中为 update_attributes 函数提供正确格式的参数的正确方法是什么?
我是怎么做的在控制器中
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