SlideShare una empresa de Scribd logo
Single Table Inheritance

 Herencia de tablas con Rails :)
   por Nelson Rojas Núñez
  nelsonrojas.wordpress.com
class Ad < ActiveRecord::Base
El problema
                           Ads
                           -name
                           -body
                           -published

                                                  class Page < ActiveRecord::Base
                                                      Pages
  class Post < ActiveRecord::Base                     -name
  Posts                                               -body
  -name                                               -published
  -body
  -published



Las tres tablas apuntan a elementos diferentes, tienen los
mismos campos, pero usan 3 tablas en la base de datos.
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
Ejemplo
$ 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
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
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.
Enlaces

● http://juixe.com/techknow/index.php/2006/06/03/rails-single-
  table-inheritance/
● http://www.therailsway.com/2006/11/19/tracks-part-3

Más contenido relacionado

PPTX
Programacionweb
PDF
Componentes, el arma secreta de Symfony2
PPT
Presentación wendy
PPTX
COLLOQVIVM LATINE
PPTX
Casa en colonia chapulapa atlixco puebla
PPTX
Секретное руководство по созданию товаров и услуг, за которыми выстроится кил...
PPT
Proyectoclasecpe
Programacionweb
Componentes, el arma secreta de Symfony2
Presentación wendy
COLLOQVIVM LATINE
Casa en colonia chapulapa atlixco puebla
Секретное руководство по созданию товаров и услуг, за которыми выстроится кил...
Proyectoclasecpe

Destacado (20)

PPT
PDF
Panduan toko online
PDF
Grenzen van veiligheid e book
DOCX
Toxicidad del polipropileno
PPTX
MMORPG ESPM ADM4A
PPTX
Legislación vigente
PPTX
como agregar espacio a un disco lleno
DOC
методические указаня по написанию курсовой
ODT
бланк тэ рп уд од
PPTX
Задротен
ODP
Presentacions amb programari lliure
DOCX
Documento 24lkjlkjkl
PPTX
Fotos do trabalho de inglês
PDF
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
PPT
Trabajo computación
DOCX
Sermão
PDF
Nissan
PPTX
Trabajo de informatica
PPT
Generacioooooooooooooooooooooooooooooooon
PPT
Lo que hay que tener en cuenta al escribir un texto argumentativo
Panduan toko online
Grenzen van veiligheid e book
Toxicidad del polipropileno
MMORPG ESPM ADM4A
Legislación vigente
como agregar espacio a un disco lleno
методические указаня по написанию курсовой
бланк тэ рп уд од
Задротен
Presentacions amb programari lliure
Documento 24lkjlkjkl
Fotos do trabalho de inglês
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
Trabajo computación
Sermão
Nissan
Trabajo de informatica
Generacioooooooooooooooooooooooooooooooon
Lo que hay que tener en cuenta al escribir un texto argumentativo
Publicidad

Similar a Single table inheritance (20)

PDF
Buenas Prácticas de desarrollo en Ruby on Rails
PPT
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
PPT
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
KEY
Taller de Introducción a Ruby on Rails
KEY
Ruby Latin Developer20012010
PDF
ActiveRecord: Deja que Postgres lo haga
ODP
Presentacion Ruby on Rails en Universidad Autónoma 2009
PDF
Presentacion Ruby on Rails CTIC-Cusco2007
PDF
Ruby on Rails
PDF
Modelos y Migraciones en Ruby on Rails
PDF
Ruby on Rails & TDD con RSpec
KEY
Integración de Arel en ActiveRecord
ODP
Desarrollo de Apps Web en Ruby on Rails
PPTX
Clasesyobjetos
PPTX
Exposición Diagrama de Clases
PPTX
Rails 5 presentation for begginers
PDF
Jpa Parte 2 Leonardo Torres Altez
PDF
Curso de Ruby on Rails para el Master de Deusto
PPTX
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
PDF
Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Taller de Introducción a Ruby on Rails
Ruby Latin Developer20012010
ActiveRecord: Deja que Postgres lo haga
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails CTIC-Cusco2007
Ruby on Rails
Modelos y Migraciones en Ruby on Rails
Ruby on Rails & TDD con RSpec
Integración de Arel en ActiveRecord
Desarrollo de Apps Web en Ruby on Rails
Clasesyobjetos
Exposición Diagrama de Clases
Rails 5 presentation for begginers
Jpa Parte 2 Leonardo Torres Altez
Curso de Ruby on Rails para el Master de Deusto
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
Ruby on Rails
Publicidad

Último (20)

PDF
Taller tecnológico Michelle lobo Velasquez
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
DOCX
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
PDF
Estrategia de apoyo valentina lopez/ 10-3
PPTX
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
Guía_de_implementación_Marco_de_gobierno_y_gestión_de_TI_Universidades.pdf
PDF
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PDF
Teoría de estadística descriptiva y aplicaciones .pdf
PPTX
Presentación final ingenieria de metodos
DOCX
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
PPTX
Uso responsable de la tecnología - EEST N°1
DOCX
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
PDF
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PPTX
Curso de generación de energía mediante sistemas solares
Taller tecnológico Michelle lobo Velasquez
Mecanismos-de-Propagacion de ondas electromagneticas
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Trabajo grupal.docxjsjsjsksjsjsskksjsjsjsj
Estrategia de apoyo valentina lopez/ 10-3
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
Presentacion de Alba Curso Auditores Internos ISO 19011
Guía_de_implementación_Marco_de_gobierno_y_gestión_de_TI_Universidades.pdf
CONTABILIDAD Y TRIBUTACION, EJERCICIO PRACTICO
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Teoría de estadística descriptiva y aplicaciones .pdf
Presentación final ingenieria de metodos
TRABAJO GRUPAL (5) (1).docxsjsjskskksksksks
Uso responsable de la tecnología - EEST N°1
TRABAJO GRUPAL (5) (1).docxsjjsjsksksksksk
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
Estrategia de Apoyo de Daylin Castaño (5).pdf
TRABAJO DE TECNOLOGIA.pdf...........................
Guía 5. Test de orientación Vocacional 2.docx
Curso de generación de energía mediante sistemas solares

Single table inheritance

  • 1. Single Table Inheritance Herencia de tablas con Rails :) por Nelson Rojas Núñez nelsonrojas.wordpress.com
  • 2. class Ad < ActiveRecord::Base El problema Ads -name -body -published class Page < ActiveRecord::Base Pages class Post < ActiveRecord::Base -name Posts -body -name -published -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 $ 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://juixe.com/techknow/index.php/2006/06/03/rails-single- table-inheritance/ ● http://www.therailsway.com/2006/11/19/tracks-part-3