Come riempire una tabella intermedia con più campi?

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

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

Il 27 gennaio 2010 20.26, pezzuya … [email protected] 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

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.