Rails表单删除有很多关系



如何通过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

最新更新