Mil gracias voy a probar todo esto que me dicen. Por ejemplo dentro de mi modelo Delfin, voy a saber a simple vista si hereda de Pescado? ese seria el type que ustedes me comentan?
paolo 2011/4/20 NeX Development <[email protected]> > Por el tema de las columnas desperdiciadas en la tabla (Pescados en este > caso) lo que podes hacer es intentar identificar aquellas que realmente no > necesiten estar 'indexadas' o las cuales no vas a utilizar para realizar > busquedas/aplicar scopes. En caso de encontrar algunas de estas podes > generar una solo columna que almacene estos atributos serializados y generar > algunos metodos del tipo accessor para setear y obtener cada uno de los > datos serializados de manera independiente. > > Otra forma es generar un modelo de atributos (algo asi como > pescado_attributes) que respete un esquma de llave-valor donde la llave > seria el nombre del atributo y el valor ¬_¬ el valor del atributo. Este > ultimo acercamiento, mas rebuscado, te va a permitir (si tenes los indices > correctamente creados) realizar busquedas sobre los atributos (un poco mas > costosas para la DB pero busquedas al fin). > La eleccion varia mucho dependiendo de que tan grande reulten ser la > cantidad de subclases y las diferencias que puedan presentar + el tipo de > operaciones que tengas que realizar con las colleciones de estos tipos. > > Aprovecho para comentarte que utilizando STI (Single table inheritance) con > ActiveRecord el type es autoseteado si utilizas las subclases directamente. > Ej, Delfin.create(:nombre => 'Flipper', :color => 'Gris', :salta_el_are => > false, :grita => true) va a terminar almacenando un registro en la DB con > esos parametros y el type == 'Delfin'. > > Saludos, > -- > Roberto > > > > 2011/4/20 Geronimo Diaz <[email protected]> > >> Hola paolo, podrias usar "Single table inheritance" ( >> http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html), la >> idea seria definir todos los atributos de todos los subtipos de pescados que >> tuvieras en la misma tabla pescado, mas un atributo llamado type que >> contendra el nombre de la clase del pescado, ejm: >> >> tabla pescados >> id nombre color . ... type >> 1 'delfin', 'gris', .... , 'Delfin' >> 2 'tiburon', ...... 'Tiburon' >> >> luego tendras un modelo para la clase abstracta y para las >> concretizaciones, Pescado, Delfin, Tiburon. Cuando en una instancia asignes >> el campo type, AR internamente intentara instanciar un objeto del tipo >> definido en ese campo, asi podras hacer cosas como Delfin.all o Tiburon.all. >> >> Hay otras formas de definir el modelo relacional, en lugar de poner todos >> los campos en una misma tabla podrias crear tablas para cada tipo y >> relacionarlas mediantes foreing keys, te dejo una breve descripcion: >> >> http://www.fortunecity.com/lavender/dale/1054/base/extendido.htm(apartado >> 6.1. Relaciones Superclase/Subclase y Especialización/ >> Generalización.) >> >> espero te sirva de ayuda. >> >> Saludos >> >> >> >> >> >> >> >> On 20/04/11 15:04, Paolo Loran wrote: >> >> Buenos dias, mi consulta esta dirijida a como maneja ActiveRecord a las >> clases Abstractas y el tema de Herencia, ya que no me queda muy claro su >> funcionamiento y uso. >> Ejemplo del Mundo Acuatico :D : >> >> Pescado (nombre, color, tamaño) >> |--------Delfin (salta_el_aro , grita) >> |--------Tiburon (dientes) >> >> Por lo que entiendo la clase Pescado seria una clase Abstracta la cual >> tendria definido entre sus atributos a nombre, color y tamaño, y por otro >> lado deberia tener a Delfin como una clase concreta que heredara de Pescado >> (al igual que tiburon). >> En mi "Sistema del Mundo Acuatico" nunca crearia nuevos pescados, pero si >> nuevos delfines y tiburones, sino entiendo mal esto deberia estar reflejado >> en el modelo no es asi?. >> Por otro lado veo que debería tener creada una tabla en mi BD de nombre >> pescado que posea a todos los atributos tanto de Pescado, Delfin y Tiburon, >> no es asi? lo que implicaría tener muchos campos con null, mi pregunta viene >> a eso, es manejaba el desperdicio de espacio en la BD de alguna forma? estoy >> utilizando SQLite3, debería tirarme a una opcion com PostgreSQL? que me >> dicen. >> >> Saludos, atte. >> poli >> >> >> _______________________________________________ >> Ruby mailing >> [email protected]http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >> >> >> _______________________________________________ >> Ruby mailing list >> [email protected] >> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar >> >> > > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > >
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
