# Come riempire una tabella intermedia con piÃ¹ campi?

**URL:** <https://www.ruby-forum.com/t/come-riempire-una-tabella-intermedia-con-pia-campi/182425>\
**Category:** IT\
**Created:** [January 27, 2010, 8:26pm UTC](https://www.ruby-forum.com/t/come-riempire-una-tabella-intermedia-con-pia-campi/182425 "2010-01-27T20:26:25Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [January 27, 2010, 8:26pm UTC](https://www.ruby-forum.com/t/come-riempire-una-tabella-intermedia-con-pia-campi/182425/1 "2010-01-27T20:26:25Z")

</div>

Ciao a tutti, ho il problema in oggetto.  
La mia tabella intermedia “clients\_models” Ã© composta da:

id (solito…autoincrementale)  
model\_id (riferimento all’id della tabella models)  
client\_id (riferimento all’id della tabella models)  
x (campo da riempire)  
y (campo da riempire)  
z (campo da riempire)

Ho giÃ “legato” tra loro i vari modelli client, model e clients\_model  
con le relazioni belongs\_to has\_many through ecc. e tutto funziona solo  
che non sÃ² quale sia il modo migliore per riempire e, allo stesso tempo,  
validare i campi x,y,z.

Infatti facendo un qualcosa del genere:

@model.clients\_models \<\< @client

vengono riempiti solo i campi id, model\_id, client\_id.

Forse potrei riempire (x,y,z) nel “modo tradizionale” creando un nuovo  
oggetto ClientsModel e riempiendolo con i campi passati dalla  
vista(form\_for).

PerÃ² mi chiedevo se c’era un modo “piÃ¹ elegante” o semplicemente “piÃ¹  
furbo” di riempirli utilizzando le relazioni precedentemente create tra  
i modelli.

Voi che ne dite?

Grazie a tutte le persone che mi risponderanno. Ciao

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [January 28, 2010, 2:47pm UTC](https://www.ruby-forum.com/t/come-riempire-una-tabella-intermedia-con-pia-campi/182425/2 "2010-01-28T14:47:26Z")

</div>

Non mi Ã¨ mai capitato di dover mettere dei campi sulla tabella di legame  
molti a molti, ma ha senso? Sono informazioni sul legame che quindi Ã¨  
necessario duplicare ogni volta?  
PerchÃ¨ altrimenti avresti potuto usare l’automatismo con  
has\_and\_belongs\_to\_many che Ã¨ completamente trasparente, senza doverti  
gestire l’oggetto.  
Se invece sono informazioni che devono stare la e devono arrivare da un  
form, non credo ci sia altra scelta se non quella di seguire la via  
tradizionale, come la chiami tu, istanziando l’oggetto mediante la  
variabile params

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [January 28, 2010, 2:58pm UTC](https://www.ruby-forum.com/t/come-riempire-una-tabella-intermedia-con-pia-campi/182425/3 "2010-01-28T14:58:03Z")

</div>

Il 27 gennaio 2010 20.26, pezzuya .. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> Ho già “legato” tra loro i vari modelli client, model e clients\_model  
> Forse potrei riempire (x,y,z) nel “modo tradizionale” creando un nuovo  
> oggetto ClientsModel e riempiendolo con i campi passati dalla  
> vista(form\_for).
> 
> Però mi chiedevo se c’era un modo “più elegante” o semplicemente “più  
> furbo” di riempirli utilizzando le relazioni precedentemente create tra  
> i modelli.

Non capisco, perché crei le relazioni tra i modelli prima e poi  
inserisci gli altri dati?

Immagino tu abbia un form, in cui per un dato client selezioni  
molteplici model (o viceversa) e per ciascuno le informazioni x, y, z.

client avrà molti clients\_models, così anche models; puoi gestire  
quindi il tutto come un normale uno a molti, vi sono parecchi esempi  
in giro, su railscasts o altrove.

pietro

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [January 30, 2010, 6:57pm UTC](https://www.ruby-forum.com/t/come-riempire-una-tabella-intermedia-con-pia-campi/182425/4 "2010-01-30T18:57:21Z")

</div>

In effetti forse potevo gestire il tutto con una semplice relazione uno  
a molti tra models e clients\_models.  
PerÃ² in fase di “scaffolding” mi era venuta in mente una relazione molti  
a molti quindi l’ho gestita cosÃ¬.  
Forse ho pensato di gestirla cosÃ¬ per avere una doppia connessione tra  
le tabelle clients e models che in effetti mi potrebbe tornare utile piÃ¹  
avanti.  
Per ora ho risolto in “modo tradizionale”.

Grazie a tutti.
