Salve a tutti. Sono di nuovo qui con un quesito niubbo.
Ho un db con 3 tabelle collegate in questo modo
TABELLA1 (soluzioni)
id
attr
tabella2_id
tabella3_id
TABELLA2 (corsi)
id
attr
…
TABELLA3 (pd)
id
attr
…
Ho specificato le associazioni tra le varie tabelle nei file dei modelli
(
tabella1.rb, tabella2.rb…)in questo modo
class Tabella1 < ActiveRecord::Base
belongs_to :Tabella2
belongs_to :Tabella3
end
class Tabella2 < ActiveRecord::Base
has_many :Tabella1
end
class Tabella3 < ActiveRecord::Base
has_many :Tabella1
end
Poi ho definito nel controller
def visualizza @tab = Tabella1.find(params[:tabella3_id]) #dovrebbe
restituire la lista dei record di tabella1 che hanno
tabella3_id=parametropassato
end
Quello che voglio fare ora è visualizzare nella vista “visualizza.rhtml”
una
tabella con queste colonne
tabella1.attr tabella2.attr
dove le righe visualizzate vengono filtrate in base a un determinato
valore
di tabella3.id.
In sostanza in sql la query sarebbe:
SELECT tabella1.attr, tabella2.attr
FROM tabella1, tabella2,tabella3
WHERE tabella1.tabella2_id = tabella2.id
AND tabella1.tabella3_id = tabella3.id
AND
tabella3.id=$valore_passato_per_parametro_al_momento_dellinvocazione_della_action
La domanda è: come faccio a “puntare” agli attributi delle 2 tabelle
collegate con la tabella1? Devo farlo direttamente dalla vista oppure lo
devo fare dal controller?
E ancora, è corretta la definizione della action “visualizza”?
Dal momento che Tabella3 has many tabella1s (e non Tabella1 come hai
scritto), ti basta creare un’istanza di Tabella3 (quella relativa all’id
che ti passi dal form), questa istanza avrà automaticamente il metodo
tabella1s che ti restituisce un’array di istanze di Tabella1, ovvero
quelle collegate alla tua tabella3
Quando si usa un linguaggio totalmente orientato agli oggetti, come
Ruby, con una persistenza dei dati ad oggetti, come ActiveRecord,
pensare a come si facevano le cose nel mondo legacy non semplifica il
lavoro… Anzi complica parecchio le cose…
Quindi… Libri alla mano! Si ricomincia tutto da capo! Io ci ho
messo un po a capire questa cosa, e per mesi ho usato una versione
“amputata” di rails, ovvero quella derivante dalla cultura di un
buzzurro (io) che per 10 anni ha lavorato in asp e php. Ci ho messo un
po, e sono ripartito dallo studio della programmazione ad oggetti (con
un corso affiancato da questo meraviglioso libro
(http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612)
disponibile anche in italiano.
A quel punto io ho iniziato a capire Rails, di cui ora coumnque uso una
bassa percentuale delle potenzialità (un po come il mio cervello )
Ti ringrazio molto per i consigli, purtroppo il mio problema è che non ho
tempo adesso per mettermi a studiare tutto da 0. Ho letto completamente
le
prime 200 pagine di Agile web dev with RoR, ma non ho trovato la
soluzione a
questo problema e non ho proprio tempo per leggermi tutto il malloppone!
Grazie mille per l’attenzione
Silvia
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.