2010-04-04 11 views
12

Sono un neofita di Ruby on Rails e sto cercando di creare un insegnante di basso per insegnare a me stesso il RoR (e il basso). Le procedure dettagliate utilizzano Scaffold per creare classi ActiveRecord, ma sembrano corrispondere a tabelle indipendenti; non c'è uso di belongs_to o has_many.Come posso creare molte relazioni uno usando Scaffold?

Mi piacerebbe creare tre classi: Scala, GuitarString e Fret. Ogni scala ha molte GuitarStrings, ognuna con molti tasti.

Come posso creare classi con questa relazione utilizzando Scaffold? C'è un modo per farlo in un colpo solo, o ho bisogno di crearli in uno stato non correlato usando Scaffold, quindi aggiungere le relazioni a mano? O dovrei abbandonare Scaffold interamente?

+0

possibile duplicato di http://stackoverflow.com/questions/502119/rails-scaffold-toautomatically-do-to-many-relationship – hobodave

+0

@hobodave: silimar, sì. Sta chiedendo "può essere fatto" e sto chiedendo "è questo il modo di farlo, se no, come?" – Simon

+0

Si consiglia di controllare la modifica nella mia risposta. –

risposta

16

Ho iniziato a imparare Ruby on Rails alcune settimane fa, e ho trovato molto più facile capire come appendere le cose e imparare a non usare il ponteggio e generare le varie parti dalla riga di comando (o macro in un IDE).

Tuttavia, da quello che posso dire, quando si usa lo scaffold per generare cose, si pensa che esso generi una "risorsa", quindi si creerà solo una risorsa alla volta, quindi si aggiungeranno le relazioni a mano dopo.

Tuttavia, il comando genera modello può creare queste relazioni per voi. Diciamo che hai usato scaffolding per creare una risorsa di scala.

Si potrebbe poi fare

ruby script/generate model GuitarString name:string scale:references 

La scala: riferimenti creerà un belongs_to :scale del modello GuitarString, ma avrete bisogno di aggiungere has_many: guitarstrings al modello in scala.

Il comando genera il modello crea anche uno script di migrazione per te e altri file necessari (dispositivi), simile allo scaffolding, ma non consente di autocreare viste o controller o altro.

EDIT:

Questo è generalmente come si sta andando a voler fare le cose - utilizzare il generano/modello o generare/vista o generano/controllore o generare/migrazione. La maggior parte degli sviluppatori di Rails non usa scaffolding, dal momento che la sua "taglia unica" raramente si adatta perfettamente alle cose. Tuttavia, la maggior parte degli sviluppatori di rails utilizza i comandi di generazione che ho citato, risparmiando tempo con la creazione manuale di helpers e fixture e dando a ciascun file un modello di base che è possibile aggiungere.

Diversi Ruby IDE come RubyMine di JetBrain dispongono di macro che eseguono essenzialmente questi comandi. In RubyMine puoi fare ctrl + alt + g, quindi inserire un altro tasto corrispondente a ciò che desideri generare.

La relazione appartiene_a può essere generata utilizzando la parola "riferimenti", come ho menzionato. Altri li aggiungerai a mano.

Problemi correlati