ich zwei Modelle haben nämlich Invoice
und InvoiceDetails
und:Rails - Wie löscht man assoziierte Attribute beim Aktualisieren eines Parents?
class Invoice < ActiveRecord::Base
has_many :invoice_details
Jetzt ein Benutzer hat die Möglichkeit, bearbeiten eine Rechnung, so kann er entfernen die invoiceDetails Attribute vom Rechnung. Also wie kann ich löschen diese verschachtelte Attribute der RechnungDetails Modell beim Aktualisieren der invoice(parent)
Modell.
Ich benutze AngularJS für Client-Seite.
Die Update-Aktion:
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
Die Rechnung Modell
class Invoice < ApplicationRecord
has_many :invoiceDetails, inverse_of: :invoice, dependent: :destroy
belongs_to :customer
accepts_nested_attributes_for :invoiceDetails
end
Das InvoiceDetails Modell
class InvoiceDetail < ApplicationRecord
belongs_to :invoice
belongs_to :product
end
Sie benötigen _destroy Parameter wahr oder falsch für jeden InvoiceDetail Objekt zu übergeben. – Vishal
Können Sie bitte die Antwort mit einem Beispiel erläutern – Paras