[Ror-es] Auto-relación simétrica

Jorge Alvarez
Tue Feb 14 17:17:42 GMT 2006


Hola Sergio:

Eso que tu quieres hacer en Rails se llama Single table inheritance.

El ejemplo que aparece en el libro "Web development with rails" trae un 
ejemplo que se aproxima mucho a lo que tu quieres:

Definición de la tabla personas:

create table people (
id int not null auto_increment,
type varchar(20) not null,
/* common attributes */
name varchar(100) not null,
email varchar(100) not null,
/* attributes for type=Customer */
balance decimal(10,2),
/* attributes for type=Employee */
reports_to int,
dept int,
/* attributes for type=Manager */
/* -- none -- */
constraint fk_reports_to foreign key (reports_to) references people(id),
primary key (id)
);

Definición de las clases de persona
class Person < ActiveRecord::Base
end
class Customer < Person
end
class Employee < Person
end
class Manager < Employee
end

Ahora gracias al atributo reports_to puedes hacer que un Manager tiene 
varios Employee....... etc...

Creo que con esto servirá para lo que tu quieres.

Saludos,

Jorge Alvarez

http://www.riojasoft.com