Herencia

Hola,

Acabo de empezar a hacer alguna cosilla en rails y me he encontrado una
situacion que no se como resolverla, a ver si alguien me echa una mano.

El problema esta en que necesito implementar unas clases que hereden de
una clase padre, pero cada subclase tendria que guardarse en una tabla
diferente. Me explico con un ejemplo:

Tengo la clase Vehiculo de la que heredan coche, moto y camion.

He visto que se puede implementar creando la tabla vehiculos que lo
guarde todo y un atributo tipo que los diferencie. Esta solucion no me
vale ya que cada una de estas clases es muy diferente de las demas y me
llenaria la tabla de valores nulos.

Lo que quiero es una tabla para cada clase con los atributos unicos y la
tabla vehiculos con los comunes.

Alguna idea?

El Jueves, 9 de Noviembre de 2006 18:13, Jordi Fernandez
escribió:

Lo que quiero es una tabla para cada clase con los atributos unicos y la
tabla vehiculos con los comunes.

Entonces la tabla “coches” ¿no tendría los campos comunes? ¿sólo los únicos?

En ese caso veo complejo usar herencia en cuanto a que no hay una
relación directa de atributos -> campos de tabla.

¿Por qué no hacer que la tabla “coches” tenga sus atributos y los cumunes
y la
tabla “vehiculos” sólo los comunes?

mmm yo me he quedado trabado en eso de herencia en rails… porque la
verdad
me dicen todos que solo debo crear la tabla del padre y un campo
discriminador… y los hijos? solo son modelos más no tablas…
Pues… pero como dice el piso de arriba, que habrán muchos campos
nulos… y
seria mejor que cada hijo tenga su tabla de igual que el padre tb su
tabla…

On Nov 9, 2006, at 10:59 PM, Jordi Fernandez wrote:

  • Class table inheritance, el sistema que comento. Segun parece,
    rails no lo soporta de momento.

Respondi esta tarde (española) pero parece que no llega, lo reenvio:

Existe un plugin que implemeta herencia de tablas, pero no lo he usado:

http://www.agilewebdevelopment.com/plugins/inherits_from

– fxn

La idea es que la tabla vehiculos tenga los campos comunes y las otras
sus
campos especificos. La relacion se hace por un identificador. Seria algo
como:

Vehiculos (id, matricula, bastidor, num_ruedas, velocidad_max,…)
//Campos comunes
Coches (id, num_plazas, es_descapotable, …)
Camiones (id, tara, peso_max…)

El problema esta en que no se como montarlo en rails.

He estado mirando un poco y hay varios tipos de herencia:

  • Single table inheritance, que es meterlo todo en Vehiculos y
    diferenciarlo
    con un atributo type (esto comporta que todos los atributos de los otros
    tipos seran nulos)
  • Class table inheritance, el sistema que comento. Segun parece, rails
    no lo
    soporta de momento.

Se que hay algun plugin, patch para el ActiveRecord… pero no se haste
que
punto funcionan. A ver si alguien sabe alguna forma de implementarlo.

Saludos

2006/11/9, Alexander G. [email protected]:

Pues habra que probarlo…

gracias

El día 9/11/06, Xavier N. [email protected] escribió: