【发布时间】:2017-07-08 10:39:13
【问题描述】:
我有两个模型,即Invoice 和InvoiceDetails 和:
class Invoice < ActiveRecord::Base
has_many :invoice_details
现在用户可以编辑发票,因此他可以删除 invoice 中的 invoiceDetails 属性。
那么如何在更新invoice(parent) 模型的同时删除 invoiceDetails 模型的那些嵌套属性。
我在客户端使用 AngularJS。
更新操作:
def update
invoice_id = params[:id]
invoice = Invoice.find(invoice_id)
if invoice.update(invoice_params)
render json: invoice, status: 200
else
render json: { errors: invoice.errors }, status: 422
end
end
def invoice_params
invoice_params = params.require(:invoice).permit(:total_amount,:balance_amount, :customer_id, :totalTax, :totalDiscount, :bill_date,:company_id, { invoice_details: [:id,:invoice_id,:product_id,:quantity, :discount, :subtotal, :tax] })
invoice_params[:invoiceDetails_attributes] = invoice_params.delete :invoice_details
invoice_params.permit!
end
发票模型
class Invoice < ApplicationRecord
has_many :invoiceDetails, inverse_of: :invoice, dependent: :destroy
belongs_to :customer
accepts_nested_attributes_for :invoiceDetails
end
InvoiceDetails 模型
class InvoiceDetail < ApplicationRecord
belongs_to :invoice
belongs_to :product
end
【问题讨论】:
-
您需要为每个 InvoiceDetail 对象传递 _destroy 参数 true 或 false。
-
能否请您举例说明答案
标签: ruby-on-rails activerecord ruby-on-rails-5