# Modificare un record da controller diversi

**URL:** <https://www.ruby-forum.com/t/modificare-un-record-da-controller-diversi/159779>\
**Category:** IT\
**Created:** [February 8, 2009, 6:00pm UTC](https://www.ruby-forum.com/t/modificare-un-record-da-controller-diversi/159779 "2009-02-08T18:00:53Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![mammaorsadj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@mammaorsadj](https://www.ruby-forum.com/u/mammaorsadj)\
**Post date:** [February 8, 2009, 6:00pm UTC](https://www.ruby-forum.com/t/modificare-un-record-da-controller-diversi/159779/1 "2009-02-08T18:00:53Z")

</div>

Ciao a tutti,  
ho iniziato da poco a creare una webapp in RoR per gestire il workflow  
degli ordini di produzione che ho in azienda.  
I cicli di produzione vengono caricati dall’utente A, quindi l’utente B  
indica l’inizio e la fine delle lavorazioni.

Creo un modello “ciclo.rb” in cui gestisco, mediante scaffolding,  
l’inserimento e modifica dei cicli di produzione da parte dell’utente A  
(il controller Ã¨ “ciclos\_controller.rb”).  
Per l’utente B, ho generato il controller “officina\_controller.rb”, con  
homepage “index”, in cui ho:

```
                  ________

```

Ciclo no. : |\_\_\_\_\_\_\_| ( Pulsante: “INIZIA” )

la view Ã¨:

\<% form\_tag(:action =\> :inizia\_odp) do %\>

\<% end %\>

l’utente B inserisce il numero del ciclo, il controller officina riporta

def inizia\_odp  
@ciclo = Ciclo.find(:first, :conditions =\> [“odp like ?”,  
params[:ciclo\_officina]])  
@ciclo.iniziato = Date::today

end

quindi nel template “inizia\_odp” vengono mostrati i campi del record  
modificato (la data di inizio compare correttamente)

PROBLEMA: tornando alla home page contenente l’elenco di tutti i cicli  
in produzione, la riga corrispondente al ciclo appena modificato riporta  
il campo “data\_inizio” vuota.

Sapete dirmi come faccio a modificare i record dello stasso modello da  
due controller diversi?  
grazie mille  
Antonio

| Ciclo no.: | \<%= text\_field\_tag :ciclo\_officina, params[:ciclo\_officina] %\>

\<%= submit\_tag “Inizia” %\>

 |

---

<div class="post-metadata">

**Author:** ![mammaorsadj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@mammaorsadj](https://www.ruby-forum.com/u/mammaorsadj)\
**Post date:** [February 8, 2009, 6:15pm UTC](https://www.ruby-forum.com/t/modificare-un-record-da-controller-diversi/159779/2 "2009-02-08T18:15:44Z")

</div>

Mammaorsa Dj wrote:

> def inizia\_odp  
> @ciclo = Ciclo.find(:first, :conditions =\> [“odp like ?”,  
> params[:ciclo\_officina]])  
> @ciclo.iniziato = Date::today
> 
> end
> 
> PROBLEMA: tornando alla home page contenente l’elenco di tutti i cicli  
> in produzione, la riga corrispondente al ciclo appena modificato riporta  
> il campo “data\_inizio” vuota.

La soluzione Ã¨ semplice: devi ricordarti di salvare il record  
modificato, ad esempio con @ciclo.save

Nella view infatti vedi il record aggiornato perchÃ© hai modificato la  
copia caricata in memoria (@ciclo), ma Rails non salva automaticamente  
le modifiche che fai ai dati.

> Sapete dirmi come faccio a modificare i record dello stasso modello da  
> due controller diversi?

Puoi lavorare su qualsiasi modello da qualsiasi controller, il quiproquo  
era la mancanza della save.

Paolo

---

<div class="post-metadata">

**Author:** ![mammaorsadj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@mammaorsadj](https://www.ruby-forum.com/u/mammaorsadj)\
**Post date:** [February 8, 2009, 7:02pm UTC](https://www.ruby-forum.com/t/modificare-un-record-da-controller-diversi/159779/3 "2009-02-08T19:02:08Z")

</div>

GRAZIE MILLE

Non riesco ancora a “pensare” come rails, le “magics” di cui tante guide  
parlano in realtÃ hanno dei fondamenti nascosti, come questa di  
visualizzare il record modificato nella mia view, che faccio ancora  
fatica a mettermi in testa…

Grazie ancora  
Antonio

---

<div class="post-metadata">

**Author:** ![mammaorsadj](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@mammaorsadj](https://www.ruby-forum.com/u/mammaorsadj)\
**Post date:** [February 9, 2009, 9:47am UTC](https://www.ruby-forum.com/t/modificare-un-record-da-controller-diversi/159779/4 "2009-02-09T09:47:02Z")

</div>

On 2/8/09 6:15 PM, Paolo M. wrote:

> > in produzione, la riga corrispondente al ciclo appena modificato riporta  
> > il campo “data\_inizio” vuota.
> 
> La soluzione è semplice: devi ricordarti di salvare il record  
> modificato, ad esempio con @ciclo.save
> 
> Nella view infatti vedi il record aggiornato perché hai modificato la  
> copia caricata in memoria (@ciclo), ma Rails non salva automaticamente  
> le modifiche che fai ai dati.

Quando l’operazione è così semplice trovo molto comodo anche usare la  
update\_attribute(s):

@ciclo.update\_attribute(:iniziato, Date.today)

Andrea
