Ruby Forum Italian Ruby user group > activerecord, struttura "ad albero" e radice

Posted by Stefano Sasso (Guest)
on 12.08.2008 09:14
(Received via mailing list)
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
Posted by Pietro Giorgianni (giorgian)
on 12.08.2008 10:05
(Received via mailing list)
On Tue, Aug 12, 2008 at 9:13 AM, Stefano Sasso <stesasso@gmail.com> 
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.
Posted by Stefano Sasso (Guest)
on 12.08.2008 10:32
(Received via mailing list)
2008/8/12 Pietro Giorgianni <giorgian@gmail.com>:

> 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 http://www.fsf.org/philosophy/no-word-attachments.html