# Database relationship

**URL:** <https://www.ruby-forum.com/t/database-relationship/179203>\
**Category:** IT\
**Created:** [November 19, 2009, 3:28pm UTC](https://www.ruby-forum.com/t/database-relationship/179203 "2009-11-19T15:28:31Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 19, 2009, 3:28pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/1 "2009-11-19T15:28:31Z")

</div>

Ciau a tutti, avrei un problema con la relazione has\_and\_belongs\_to\_many  
per relazionare “molti a molti” due modelli (artists e events). Il mio  
problema sussiste nell’inserimento degli id nella tabella ponte  
“artists\_events”, ossia non ho idea di come farli inserire  
dinamicamente:  
dati gli artisti prensenti nel database, quando creo un evento, voglio  
associargli gli artisti (quindi anche piÃ¹ di uno) che ci possono  
partecipare.  
Mi potete dare una mano please?

Grazie mille

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 19, 2009, 3:30pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/2 "2009-11-19T15:30:45Z")

</div>

Lorenzo C. wrote:

> Ciau a tutti, avrei un problema con la relazione has\_and\_belongs\_to\_many  
> per relazionare “molti a molti” due modelli (artists e events). Il mio  
> problema sussiste nell’inserimento degli id nella tabella ponte  
> “artists\_events”, ossia non ho idea di come farli inserire  
> dinamicamente:  
> dati gli artisti prensenti nel database, quando creo un evento, voglio  
> associargli gli artisti (quindi anche piÃ¹ di uno) che ci possono  
> partecipare.  
> Mi potete dare una mano please?
> 
> Grazie mille

Scusate ho visto ora un altro topic uguale:  
[http://www.ruby-forum.com/topic/176915#new](http://www.ruby-forum.com/topic/176915#new)

Se ho problemi nuovamente riposto

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 19, 2009, 3:33pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/3 "2009-11-19T15:33:10Z")

</div>

[http://railstutor.org/projects/rails-tutor/wiki/Associations](http://railstutor.org/projects/rails-tutor/wiki/Associations)

Il 19 novembre 2009 15.30, Lorenzo C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> > 
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
Carlo P.  
email: removed\_email\_address@domain.invalid  
twitter: @carlopecchia

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 19, 2009, 4:31pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/4 "2009-11-19T16:31:08Z")

</div>

No ho capito come funziona il “molti a molti”, il mio problema Ã¨  
l’autopopolamento della tabella ponte…ho provato a vedere i link che  
ha postato Pietro G. su come fare il tutto, perÃ² ho problemi  
sulla sintassi del check\_box, perchÃ¨ se metto check\_box\_tag mi diche che  
non lo conosce come metodo, ma su internet non trovo sintassi per il  
check\_box normale…

Grazie mille

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 20, 2009, 1:00am UTC](https://www.ruby-forum.com/t/database-relationship/179203/5 "2009-11-20T01:00:58Z")

</div>

Il 19 novembre 2009 16.31, Lorenzo C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> No ho capito come funziona il “molti a molti”, il mio problema è  
> l’autopopolamento della tabella ponte…ho provato a vedere i link che  
> ha postato Pietro G. su come fare il tutto, però ho problemi  
> sulla sintassi del check\_box, perchè se metto check\_box\_tag mi diche che  
> non lo conosce come metodo, ma su internet non trovo sintassi per il  
> check\_box normale…

ciao,

non ho capito bene qual esempio ti ho indicato io; ho appena provato  
l’esempio su railscasts:

> **[\#17 HABTM Checkboxes - RailsCasts](http://railscasts.com/episodes/17-habtm-checkboxes)**
>
> Short Ruby on Rails screencasts containing tips, tricks and tutorials. Great for both novice and experienced web developers.

versione testuale:  
[http://asciicasts.com/episodes/17-habtm-checkboxes](http://asciicasts.com/episodes/17-habtm-checkboxes)

ho ruby 1.8.6 e rails 2.3.4 (per ora sono su windows, ma è più o meno  
uguale) e funziona tutto, in particolare funziona check\_box\_tag.

Che versione di ruby e rails hai?

Se vuoi posso mandarti l’esempio che ho provato, ma praticamente è  
roba di cinque minuti: ho creato due scaffold per artist e event, ho  
aggiunto una riga ai metodi update e create, una nei model e poi  
nei form di event ho inserito:

```
<% for artist in @artists %>
  <%= check_box_tag "event[artist_ids][]", artist.id,

```

@event.artists.include?(artist) %\>  
\<%= artist.name %\>  
  
\<% end %\>

e ovviamente il codice in show per mostrare gli artisti associati.

Dacci qualche dettaglio in più per capire il problema.

pietro

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 20, 2009, 2:19pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/6 "2009-11-20T14:19:15Z")

</div>

Il 20 novembre 2009 13.53, Lorenzo C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> […] poichè è probabile che ci potranno essere molti artisti, non  
> c’è un modo diverso di visualizzare la lista degli artisti tenendo conto  
> di questo fatto?

Soluzione uno: usa una select multipla; è un po’ più compatta di una  
sfinza di checkbox, ma non ti cambia molto la vita.

Soluzione due, più complessa: usa un qualche modo ajax per navigare  
l’elenco degli artisti (paginazione, tabs, autocomplete, altro) e fai  
in modo che, quando si clicca l’artista, venga aggiunto un hidden  
(sempre chiamato event[artist\_ids][]).

In una situazione simile ho usato jquery.autocomplete, facendo in modo  
che quando scegli un elemento venga creato un hidden e venga mostrato  
l’elemento, con accanto il pulsante rimuovi che, se premuto, toglie  
hidden e visualizzazione dell’elemento.

Sembra complicato, ma me la sono cavata con una decina di righe di  
javascript e un po’ di html; tutto sta nel dividere il problema in  
problemi più semplici.

Se ho tempo, nel weekend, provo ad estrarre solo questa parte e a  
pubblicarla stile tutorial.

pietro

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 20, 2009, 2:40pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/7 "2009-11-20T14:40:56Z")

</div>

Ora provo a farlo!! Grazie mille per tutto!!

---

<div class="post-metadata">

**Author:** ![lorenz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/9d8465/32.png) [@lorenz](https://www.ruby-forum.com/u/lorenz)\
**Post date:** [November 20, 2009, 1:53pm UTC](https://www.ruby-forum.com/t/database-relationship/179203/8 "2009-11-20T13:53:04Z")

</div>

Pietro G. wrote:

> Il 19 novembre 2009 16.31, Lorenzo C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
> scritto:
> 
> > No ho capito come funziona il “molti a molti”, il mio problema ï¿½  
> > l’autopopolamento della tabella ponte…ho provato a vedere i link che  
> > ha postato Pietro G. su come fare il tutto, perï¿½ ho problemi  
> > sulla sintassi del check\_box, perchï¿½ se metto check\_box\_tag mi diche che  
> > non lo conosce come metodo, ma su internet non trovo sintassi per il  
> > check\_box normale…
> 
> ciao,
> 
> non ho capito bene qual esempio ti ho indicato io; ho appena provato  
> l’esempio su railscasts:  
> [#17 HABTM Checkboxes - RailsCasts](http://railscasts.com/episodes/17-habtm-checkboxes)  
> versione testuale:  
> [http://asciicasts.com/episodes/17-habtm-checkboxes](http://asciicasts.com/episodes/17-habtm-checkboxes)
> 
> ho ruby 1.8.6 e rails 2.3.4 (per ora sono su windows, ma ï¿½ piï¿½ o meno  
> uguale) e funziona tutto, in particolare funziona check\_box\_tag.
> 
> Che versione di ruby e rails hai?
> 
> Se vuoi posso mandarti l’esempio che ho provato, ma praticamente ï¿½  
> roba di cinque minuti: ho creato due scaffold per artist e event, ho  
> aggiunto una riga ai metodi update e create, una nei model e poi  
> nei form di event ho inserito:
> 
> ```
> <% for artist in @artists %>
> <%= check_box_tag "event[artist_ids][]", artist.id,
> 
> ```
> 
> @event.artists.include?(artist) %\>  
> \<%= artist.name %\>  
>   
> \<% end %\>
> 
> e ovviamente il codice in show per mostrare gli artisti associati.
> 
> Dacci qualche dettaglio in piï¿½ per capire il problema.
> 
> pietro

Ho anche io versione ruby 1.8.6 e rails 2.3.4 e infatti ora che mi hai  
postato questo pezzo di codice Ã¨ giusto ed Ã¨ come lo facevo anche io, se  
non che sbagliavo nel fatto che mettevo “f.check\_box\_tag”…un  
consiglio, poichÃ¨ Ã¨ probabile che ci potranno essere molti artisti, non  
c’Ã¨ un modo diverso di visualizzare la lista degli artisti tenendo conto  
di questo fatto?

Grazie mille
