Domanda da niubbo.
Ho una pagina in cui l’utente pu modificare una specie di oggetto
ordine: testata + righe. Pu aggiungere, togliere, modificare righe.
Quando scatena l’update c’ un modo per persistere le modifiche senza
gestire a mano gli insert/update/delete?
Se mi limito ad un @order.update_attributes(params[:order]) non
cancella quelle rimosse dall’utente.
grazie
Ho una pagina in cui l’utente pu modificare una specie di oggetto
ordine: testata + righe. Pu aggiungere, togliere, modificare righe.
Quando scatena l’update c’ un modo per persistere le modifiche senza
gestire a mano gli insert/update/delete?
Se mi limito ad un @order.update_attributes(params[:order]) non
cancella quelle rimosse dall’utente.
Cos a naso direi che hai un modello Order con un’associazione tipo
has_many :rows, e in quel caso hai bisogno di una soluzione in
accepts_nested_attributes_for.
Qua una valida introduzione alla cosa:
http://archives.ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes
Spero di avere interpretato bene la tua esigenza
–
Alessandro M.
freegoweb.it
Grazie, in effetti l’articolo spiega un po’ di cose e mi fa intuire
che questo codice dovrebbe funzionare:
orders_controller
def update
@order = Order.find(params[:id])
@order.update_attributes(params[:order])
redirect_to orders_path
end
Cio se da order tolgo un item l’update se ne accorge e lo rimuove.
Giusto?
A me non funziona, ma io sto usando MongoDb/MongoId…potrebbe essere
dovuto a quello?
grazi.e
2012/5/27 Alessandro M. [email protected]:
Risolto!
Con MongoId va specificato sul modello “Parent” (quello di Order)
l’allow_destroy per i nested_attributes:
accepts_nested_attributes_for :order_items, :allow_destroy => true
grazie comunque. Articolo molto interessante.
2012/5/27 Emanuele DelBono [email protected]:
E a proposito di update massivo, i problemi di sicurezza che spiegano
qui Securing Rails Applications — Ruby on Rails Guides riguardo
a casi come Order.new(params[:order]) valgono anche per l’update. Usa
attr_accessible a meno che tu non voglia esporre agli utenti tutti i
campi di Order e dei suoi nested attributes.
Paolo