# Problema con modelli ed ereditarietÃ

**URL:** <https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145>\
**Category:** IT\
**Created:** [November 3, 2007, 8:11pm UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145 "2007-11-03T20:11:40Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 3, 2007, 8:11pm UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/1 "2007-11-03T20:11:40Z")

</div>

Ho i seguenti modelli.

class Core \< ActiveRecord::Base  
end

class Place \< Core  
belongs\_to :locality  
end

class Locality \< ActiveRecord::Base  
has\_many :places  
end

- altri che ereditano sempre da Core.

Il modello core sul db ha questi attributi:  
cores(id,name,type)

place invece:  
places(core\_id,locality\_id,address)

e il modello locality:  
localities(id,name)

Ora se da un controller inserisco questa riga ad es:  
puts Locality.find(:first).places

ricevo questo errore:  
Mysql::Error: Unknown column ‘cores.locality\_id’ in ‘where clause’:  
SELECT \* FROM cores WHERE (cores.locality\_id = 16001) AND (  
(cores.`type` = ‘Place’ ) )

cosa devo fare per risolvere il problema?  
Grazie

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 4, 2007, 4:49am UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/2 "2007-11-04T04:49:03Z")

</div>

ActiveRecord si aspetta che ogni oggetto del model abbia una  
corrispettiva tabella nel db. Tuttavia, esiste un caso particolare in  
cui puoi associare piÃ¹ classi ad una tabella: Ã¨ il Single Table  
Inheritance (STI). Quindi se vuoi che Locality si riferisca a  
localities, la sua superclasse deve essere ActiveRecord::Base e non  
Core.

La struttura delle classi che hai impostato, viene interpretato da Rails  
come una STI, per questo cerca la colonna locality\_id in cores.

Spero di essere stato chiaro,  
Ciao.

–  
blog: [www.lucaguidi.com](http://www.lucaguidi.com)

Speaker at:  
Rails To Italy '07 Conference  
Oct, 26-27 2007 - Pisa  
[www.railstoitaly.org](http://www.railstoitaly.org)

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 4, 2007, 1:26pm UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/3 "2007-11-04T13:26:46Z")

</div>

PerchÃ© mai? E’ un attributo in piÃ¹ da gestire (type, per convenzione)

–  
blog: [www.lucaguidi.com](http://www.lucaguidi.com)

Speaker at:  
Rails To Italy '07 Conference  
Oct, 26-27 2007 - Pisa  
[www.railstoitaly.org](http://www.railstoitaly.org)

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 4, 2007, 11:47am UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/4 "2007-11-04T11:47:15Z")

</div>

Ma con il Single Table Inheritance nn c’Ã¨ un grande spreco di memoria?

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 4, 2007, 1:57pm UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/5 "2007-11-04T13:57:10Z")

</div>

Luca G. wrote:

> PerchÃ© mai? E’ un attributo in piÃ¹ da gestire (type, per convenzione)

ogni volta che inserisco un nuovo record di una certa classe che estende  
cores tutti gli attributi che nn fanno parte di quella classe verranno  
settati a null.  
Quindi occuperanno una certa quantitÃ di memoria (a seconda del tipo di  
attributo).

Dato que ho molte classi che estendono cores, in ogni riga di sanno  
molti valori settati a null e quindi molta memoria occupata inutilmente.

sbaglio?

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 4, 2007, 3:22pm UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/6 "2007-11-04T15:22:03Z")

</div>

— Luca R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Quindi occuperanno una certa quantità di memoria (a  
> seconda del tipo di  
> attributo).

si, ogni record conterrà potenzialmente tutti i campi,  
settati a null, ma non è uno spreco spaventoso di  
memoria e non te ne dovresti preoccupare.  
L’alternativa è implementarsi da zero un sistema per  
l’ereditarietà multi-tabella, che è possibile ma imo  
non è una buona idea.

> Dato que ho molte classi che estendono cores, in  
> ogni riga di sanno  
> molti valori settati a null e quindi molta memoria  
> occupata inutilmente.
> 
> sbaglio?

sono solo puntatori a null. Pochi byte sprecati,  
dubito che sarà quello il collo di bottiglia  
dell’applicazione 🙂

```
  ___________________________________________________________

```

Want ideas for reducing your carbon footprint? Visit Yahoo! For Good  
[http://uk.promotions.yahoo.com/forgood/environment.html](http://uk.promotions.yahoo.com/forgood/environment.html)

---

<div class="post-metadata">

**Author:** ![stratboy](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/838e76/32.png) [@stratboy](https://www.ruby-forum.com/u/stratboy)\
**Post date:** [November 5, 2007, 12:45am UTC](https://www.ruby-forum.com/t/problema-con-modelli-ed-ereditarieta/119145/7 "2007-11-05T00:45:51Z")

</div>

Luca R. ha scritto:

> ogni volta che inserisco un nuovo record di una certa classe che estende  
> cores tutti gli attributi che nn fanno parte di quella classe verranno  
> settati a null.  
> Quindi occuperanno una certa quantitÃ di memoria (a seconda del tipo di  
> attributo).  
> Il tutto dipende da come usi la STI.

–  
blog: [www.lucaguidi.com](http://www.lucaguidi.com)

Speaker at:  
Rails To Italy '07 Conference  
Oct, 26-27 2007 - Pisa  
[www.railstoitaly.org](http://www.railstoitaly.org)
