# Rails: update "massivo"

**URL:** <https://www.ruby-forum.com/t/rails-update-massivo/220073>\
**Category:** IT\
**Created:** [May 27, 2012, 8:19am UTC](https://www.ruby-forum.com/t/rails-update-massivo/220073 "2012-05-27T08:19:32Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gurdipe\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b77776/32.png) [@Gurdipe\_D](https://www.ruby-forum.com/u/Gurdipe_D)\
**Post date:** [May 27, 2012, 8:19am UTC](https://www.ruby-forum.com/t/rails-update-massivo/220073/1 "2012-05-27T08:19:32Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Emanuele\_DelBono](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/e19adc/32.png) [@Emanuele\_DelBono](https://www.ruby-forum.com/u/Emanuele_DelBono)\
**Post date:** [May 27, 2012, 10:28am UTC](https://www.ruby-forum.com/t/rails-update-massivo/220073/2 "2012-05-27T10:28:34Z")

</div>

> 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](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

---

<div class="post-metadata">

**Author:** ![Emanuele\_DelBono](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/e19adc/32.png) [@Emanuele\_DelBono](https://www.ruby-forum.com/u/Emanuele_DelBono)\
**Post date:** [May 27, 2012, 10:02pm UTC](https://www.ruby-forum.com/t/rails-update-massivo/220073/3 "2012-05-27T22:02:23Z")

</div>

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. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![Emanuele\_DelBono](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/e19adc/32.png) [@Emanuele\_DelBono](https://www.ruby-forum.com/u/Emanuele_DelBono)\
**Post date:** [May 27, 2012, 10:30pm UTC](https://www.ruby-forum.com/t/rails-update-massivo/220073/4 "2012-05-27T22:30:13Z")

</div>

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 [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![Emanuele\_DelBono](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/e/e19adc/32.png) [@Emanuele\_DelBono](https://www.ruby-forum.com/u/Emanuele_DelBono)\
**Post date:** [May 27, 2012, 10:29pm UTC](https://www.ruby-forum.com/t/rails-update-massivo/220073/5 "2012-05-27T22:29:20Z")

</div>

E a proposito di update massivo, i problemi di sicurezza che spiegano  
qui [Securing Rails Applications — Ruby on Rails Guides](http://guides.rubyonrails.org/security.html#mass-assignment) 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
