La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Single Table Inheritance

Presentaciones similares


Presentación del tema: "Single Table Inheritance"— Transcripción de la presentación:

1 Single Table Inheritance
Herencia de tablas con Rails :) por Nelson Rojas Núñez

2 El problema Ads -name -body -published Pages -name -body -published
class Ad < ActiveRecord::Base El problema Ads -name -body -published class Page < ActiveRecord::Base Pages -name -body -published class Post < ActiveRecord::Base Posts -name -body -published Las tres tablas apuntan a elementos diferentes, tienen los mismos campos, pero usan 3 tablas en la base de datos.

3 Usando Single Table Inheritance
class Entry < ActiveRecord::Base Entries -name -body -published -type class Ad < Entry class Post < Entry class Page < Entry Ad Post Page

4 Ejemplo Las Clases class Entry < ActiveRecord::Base end
$ rails demo demo$ ruby script/generate model entry name:string body:text published:boolean type:string demo$ rake db:migrate demo$ ruby script/generate model post --skip-migration demo$ ruby script/generate model ad --skip-migration  demo$ ruby script/generate model page --skip-migration Las Clases class Entry < ActiveRecord::Base end class Page < Entry end class Post < Entry end class Ad < Entry end

5 Usemos la consola para probar
>> o = Post.new >> #<Post id: nil, name: nil, body: nil, published: nil, type: "Post", created_at: nil, updated_at: nil> >> o.name = "mi primer post" >> o.body = "este es el cuerpo de mi primer post" >> o.published = true >> o.save >> p = Page.new >> #<Page id: nil, name: nil, body: nil, published: nil, type: "Page", created_at: nil, updated_at: nil> >> p.name = "mi primera pagina" >> p.body = "este es el cuerpo de mi primera pagina" >> p.published = true >> p.save >> Entry.count => 2 >> Post.count => 1 >> Page.count => 1

6 Conclusiones Lo bueno Permite realizar búsquedas en un único lugar para cosas diferentes. Menos código para mantención. Herencia elegante :)  Lo malo No es la panacea, por tanto no abusar de ella cuando los elementos requieren tratamientos diferentes. Una mala idea es hacer herencia con órdenes de compra, facturas y guías.

7 Enlaces  http://www.therailsway.com/2006/11/19/tracks-part-3


Descargar ppt "Single Table Inheritance"

Presentaciones similares


Anuncios Google