[ruby-it] has_and_belongs_to_many come riempire la join table?

Mauro mrsanna1 a gmail.com
Mer 4 Feb 2009 23:30:48 CET


2009/1/27 Pietro Giorgianni <giorgian a gmail.com>:
> 2009/1/27 Mauro <mrsanna1 a gmail.com>:
>> Dovrebbero essere le foreign keys nella tabella di join no? category_id e
>> supplier_id.
>
> andiamo con ordine.
> tu hai Supplier e Category, e ogni supplier può appartenere a più
> categorie e ogni categoria può appartenere a ogni supplier.
>
> una volta che hai creato una categoria e un supplier, c'è ancora un
> dato che manca: questa categoria si applica a questo supplier?
>
> se hai tre categorie e tre suppier, il software non può indovinare
> come sono associate.
>
> ci sono diversi modi di procedere, in base a come vuoi che sia l'interfaccia:
>
> a) puoi inserire prima tutte le categorie, poi tutti i clienti e
> infine fare un rettangolo di checkbox in cui spuntare quelle giuste;
>
> (crei gli oggetti così come hai fatto finora, poi fai il form
> (eventualmente parliamo di come si può fare) e fai le varie
> associazioni;
>
> b) puoi inserire prima le categorie; quando poi inserisci ogni
> supplier, scegli con checkbox o una select multipla le categorie per
> questo supplier;

Piano piano comincio a capire grazie anche agli episodi su railscast,
veramente utili :-)
Ho scelto la soluzione b.
Una parte del codice della view per i suppliers e':

<p>
    <%= f.label :aggiudicazioniGare %><br />
    <%= f.text_field :aggiudicazioniGare %>
</p>
<p>
    <%= f.label :note %><br />
    <%= f.text_area :note %>
</p>
<p>
  <%= f.label :categorie %><br />
  <%= f.collection_select :category_ids, @categories, :id, :descrizione %>
</p>

Dove quindi ho una select attraverso la quale indicare la categoria
associata al fornitore.
Ovviamente nel controller fornitore ho: @categories=Category.find(:all).
Funziona :-)
Pero' mi serve qualcosa di piu':
Le categorie fanno parte di diversi settori, cioe' ho un'associazione
uno a molti tra settori e categorie.
Quando inserisco un nuovo fornitore percio', non voglio assegnarli la
categoria di appartenenza scegliendo tra tutte le categorie
disponibili, bensi' vorrei prima indicare il settore per poi scegliere
tra le categorie appartenenti al settore selezionato.
Non so se sono riuscito a spiegarmi.
Dovrei capire a fondo i meccanismi che collegano i modelli con i
controllers con le views, e infatti li sto capendo piano piano
lavorando sul campo, solo che non riesco a trovare la soluzione a
questo banale problemino.


More information about the Ml mailing list