# Dubbi atavici con rails

**URL:** <https://www.ruby-forum.com/t/dubbi-atavici-con-rails/140764>\
**Category:** IT\
**Created:** [June 18, 2008, 11:36am UTC](https://www.ruby-forum.com/t/dubbi-atavici-con-rails/140764 "2008-06-18T11:36:53Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [June 18, 2008, 11:36am UTC](https://www.ruby-forum.com/t/dubbi-atavici-con-rails/140764/1 "2008-06-18T11:36:53Z")

</div>

Ciao a tutti,  
sto muovendo i primi passi con rails e dopo aver letto un po di  
tutorial, mi sono accorto che rails 2.1 cambia (soprattutto) il modo di  
gestire lo scaffolding e sto cercando di adattare gli esempi che ho  
trovato a rails 2; avrei bisogno di alcuni chiarimenti, che forse sono  
banali, ma giusto per non avere dubbi fin dall’inizio:

Problema: creare una TodoList

ho 2 tabelle: una rappresenta le liste ed una rappresenta le cose da  
fare; la relazione todos --\> todo\_items è 1 a molti  
Quindi:  
ruby script/generate scaffold Todo name:string done:integer  
rake db:migrate  
ruby script/generate scaffold Todo\_Item name:string done:integer  
todos\_id:integer  
rake db:migrate  
e fin qui tutto bene nel senso che mi crea le tabelle ed il resto in  
modo corretto

Domanda: nella tabella degli Items viene creato il campo per la chiave  
importata (todos\_id) ma la foreign key la devo creare io, è corretto  
oppure sbaglio qualcosa ?  
D: se voglio aggiungere un campo lo aggiungo nel db e lo posso già  
gestire con la model corrispondente, naturalmente dovrò aggiungerlo a  
mano in tutti i file creati dallo scaffolding (ad esempio nelle viste)  
oppure c’è un modo per rigenerare tutto automaticamente ?

Quando inserisco le relazioni nelle model scrivo

file todo.rb  
class Todo \< ActiveRecord::Base  
has\_many:todo\_items  
end

file todo\_item.rb  
class TodoItem \< ActiveRecord::Base  
belongs\_to:todo  
end

Domanda: il valore degli attributi has\_many e belongs\_to è il nome della  
model oppure quello della tabella (todo è il nome della tabella ma  
singolare ?? Però negli esempi fa così…). Il mio dubbio è che non so  
mai a cosa mi devo riferire …

se da console scrivo:

> > lista1=Todo.new  
> > =\> #\<Todo id: nil, name: nil, done: nil, created\_at: nil, updated\_at:  
> > nil\>
> 
> > lista1.name=“Lista cose fare”  
> > =\> “Lista cose fare”
> 
> > lista1.done=0  
> > =\> 0
> 
> > item1=Todo\_Item.new  
> > LoadError: Expected  
> > /home/Luigi/myScripts/RoR/todo/app/models/todo\_item.rb to define  
> > Todo\_Item  
> > from  
> > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active\_support/dependencies.rb:261:in  
> > `load_missing_constant' from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/dependencies.rb:467:in`const\_missing’  
> > from  
> > /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active\_support/dependencies.rb:479:in  
> > `const\_missing’  
> > from (irb):4

ottengo questo errore

Qualcuno da indicarmi dove posso trovare esempi magari già con rails 2ml ?

Grazie a tutti in anticipo !

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [June 18, 2008, 11:41am UTC](https://www.ruby-forum.com/t/dubbi-atavici-con-rails/140764/2 "2008-06-18T11:41:37Z")

</div>

Così, ad intuito, Todo\_Item non è un nome valido per una classe. Cioè  
Rails non si aspetta sto formato. Ti consiglierei TodoList ed Item.

## Luca

blog: [www.lucaguidi.com](http://www.lucaguidi.com)  
Pro-Netics: [www.pro-netics.com](http://www.pro-netics.com)  
Sourcesense - making sense of Open Source: [www.sourcesense.com](http://www.sourcesense.com)

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [June 18, 2008, 11:46am UTC](https://www.ruby-forum.com/t/dubbi-atavici-con-rails/140764/3 "2008-06-18T11:46:10Z")

</div>

Luigi M. wrote:

> …  
> file todo\_item.rb  
> class TodoItem \< ActiveRecord::Base  
> belongs\_to:todo  
> end
> 
> …  
> se da console scrivo:  
> …  
> item1=Todo\_Item.new

La classe Todo\_Item non esiste.  
Esiste la classe TodoItem.

---

<div class="post-metadata">

**Author:** ![softwarewin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5f9b8f/32.png) [@softwarewin](https://www.ruby-forum.com/u/softwarewin)\
**Post date:** [June 18, 2008, 12:59pm UTC](https://www.ruby-forum.com/t/dubbi-atavici-con-rails/140764/4 "2008-06-18T12:59:32Z")

</div>

Alle mercoledì 18 giugno 2008, Luigi M. ha scritto:

> Ciao a tutti,  
> Domanda: nella tabella degli Items viene creato il campo per la chiave  
> importata (todos\_id) ma la foreign key la devo creare io, è corretto  
> oppure sbaglio qualcosa ?

E’ corretto la foreign key non mi risulta che te la crea  
automaticamente, nè  
tantomeno è necessaria.

> D: se voglio aggiungere un campo lo aggiungo nel db e lo posso già  
> gestire con la model corrispondente, naturalmente dovrò aggiungerlo a  
> mano in tutti i file creati dallo scaffolding (ad esempio nelle viste)  
> oppure c’è un modo per rigenerare tutto automaticamente ?

Non dovresti modificare manualmente il db, dovresti invece creare una  
migration con le modifiche apportate.  
Ad ogni modo lo scaffolding non è obbligatorio utilizzarlo, è un aiuto  
fornito  
da rails, ma non mi risulta si possa fare una cosa del genere.  
In genere in un progetto complesso io parto dal db e poi genero  
eventualmente  
il model e il controller separatamente.

> Domanda: il valore degli attributi has\_many e belongs\_to è il nome della  
> model oppure quello della tabella (todo è il nome della tabella ma  
> singolare ?? Però negli esempi fa così…). Il mio dubbio è che non so  
> mai a cosa mi devo riferire …

devi pensare in inglese: belongs\_to (appartiene a) è singolare. has\_many  
invece è prurale  
Ciao  
G.
