# Activerecord, struttura "ad albero" e radice

**URL:** <https://www.ruby-forum.com/t/activerecord-struttura-ad-albero-e-radice/145628>\
**Category:** IT\
**Created:** [August 12, 2008, 9:14am UTC](https://www.ruby-forum.com/t/activerecord-struttura-ad-albero-e-radice/145628 "2008-08-12T09:14:18Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![stefsava](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@stefsava](https://www.ruby-forum.com/u/stefsava)\
**Post date:** [August 12, 2008, 9:14am UTC](https://www.ruby-forum.com/t/activerecord-struttura-ad-albero-e-radice/145628/1 "2008-08-12T09:14:18Z")

</div>

ciao a tutti,  
ho una serie di modelli activerecord così strutturati  
A  
has\_many B

B  
belongs\_to A  
has\_many C

C  
belongs\_to B  
has\_many D

ora, il problema è questo:  
sto cercando un metodo per accedere direttamente ad A, sia che mi  
trovi in D, che in C che in B; insomma, un qualcosa tipo C.root.  
Deve essere una cosa “universale” per tutti i modelli, insomma, non  
voglio dover scrivere un metodo diverso per ogni modello usando  
D.C.B.A etc…

è possibile questo?  
ciao,  
stefano

---

<div class="post-metadata">

**Author:** ![stefsava](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@stefsava](https://www.ruby-forum.com/u/stefsava)\
**Post date:** [August 12, 2008, 10:32am UTC](https://www.ruby-forum.com/t/activerecord-struttura-ad-albero-e-radice/145628/2 "2008-08-12T10:32:08Z")

</div>

2008/8/12 Pietro G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> personalmente ho optato per la duplicazione, cioè ho messo un campo  
> company\_id in molte tabelle, sebbene in teoria sarebbe bastato  
> metterlo in una sola tabella, ma in quel caso tutte le mie query  
> sarebbero state complessissime.

non mi ispira molto questa soluzione, per il momento ho creato un  
metodo root in tutti i modelli, con, ad esempio

D:  
def root  
c.b.a.id  
end

C:  
def root  
b.a.id  
end

B:  
def root  
a.id  
end

ma sarebbe molto meglio se ci fosse un modo per evitare tutto questo…

ciao,  
stefano

## –

Per favore non mandate allegati in Word o PowerPoint.  
Si veda [We Can Put an End to Word Attachments - GNU Project - Free Software Foundation](http://www.fsf.org/philosophy/no-word-attachments.html)

---

<div class="post-metadata">

**Author:** ![stefsava](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c2a13f/32.png) [@stefsava](https://www.ruby-forum.com/u/stefsava)\
**Post date:** [August 12, 2008, 10:05am UTC](https://www.ruby-forum.com/t/activerecord-struttura-ad-albero-e-radice/145628/3 "2008-08-12T10:05:48Z")

</div>

On Tue, Aug 12, 2008 at 9:13 AM, Stefano S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> ora, il problema è questo:  
> sto cercando un metodo per accedere direttamente ad A, sia che mi  
> trovi in D, che in C che in B; insomma, un qualcosa tipo C.root.  
> Deve essere una cosa “universale” per tutti i modelli, insomma, non  
> voglio dover scrivere un metodo diverso per ogni modello usando  
> D.C.B.A etc…

mi trovo in una situazione molto simile: ho uno schema db abbastanza  
complesso, e nel mio caso la “radice” è l’azienda (modello Company),  
nel senso che ogni utente deve accedere solo agli oggetti della  
propria azienda,

personalmente ho optato per la duplicazione, cioè ho messo un campo  
company\_id in molte tabelle, sebbene in teoria sarebbe bastato  
metterlo in una sola tabella, ma in quel caso tutte le mie query  
sarebbero state complessissime.
