[ruby-it] associazione molti a molti - salvataggio tabella intermedia

Andrea Longhi andrea74 a mailshack.com
Sab 6 Giu 2009 11:36:23 CEST


Marco Mueller wrote:

> in teacher.rb ho scritto:
>   has_many :disciplines, :through => :discteaches
> in discipline.rb ho scritto:
>   has_many :teachers, :through => :discteaches

Allora, in entrambi manca
has_many :discteaches

> def create
>     @teacher = Teacher.new(params[:teacher])
>     @discteach = Discteach.new
>     @discteach.discipline_id = params[:discipline.id]
                                       ^^^^^^^^^^^^^^^^
params[:discipline.id] è nil, se nella vista usi <select name="materia"> 
qui dovrai usare params[:materia]

>     @discteach.teacher_id = @teacher.id
qui @teacher.id è nil, essendo @teacher un nuovo record non ancora 
salvato id è nil. Prima devi salvare @teacher, poi assegnare 
@discteach.teacher_id

Un appunto stilistico: secondo me è orribile mischiare italiano e 
inglese nel codice: leggere robe tipo teacher.cognome o 
discipline.descrizione fa venire l'orticaria e manca di consistenza, se 
il tuo problema è avere i nomi dei campi in italiano nelle viste ti 
consiglio di usare la localizzazione di rails che funziona benissimo 
anche per queste cose.

Ultima nota: ci sono un paio di screencast sulle relazioni has_many e 
has_many through su railscasts.com, ti consiglio di guardarli per vedere 
come migliorare il codice del controller e delle viste.



-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list