SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
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

Destacado

Grenzen van veiligheid e book
Grenzen van veiligheid e bookGrenzen van veiligheid e book
Grenzen van veiligheid e bookAmanda Jansen
 
Legislación vigente
Legislación vigenteLegislación vigente
Legislación vigentemarta
 
como agregar espacio a un disco lleno
como agregar espacio a un disco llenocomo agregar espacio a un disco lleno
como agregar espacio a un disco llenoYaneth Love Garcia
 
методические указаня по написанию курсовой
методические указаня по написанию курсовойметодические указаня по написанию курсовой
методические указаня по написанию курсовойDemanessa
 
бланк тэ рп уд од
бланк тэ рп уд одбланк тэ рп уд од
бланк тэ рп уд одDemanessa
 
Задротен
ЗадротенЗадротен
Задротенvaldis82
 
Presentacions amb programari lliure
Presentacions amb programari lliurePresentacions amb programari lliure
Presentacions amb programari lliureguest9860fa
 
Fotos do trabalho de inglês
Fotos do trabalho de inglêsFotos do trabalho de inglês
Fotos do trabalho de inglêslog1am
 
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà NiafMarco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà NiafPhiNet Social Media Communication
 
Trabajo computación
Trabajo computaciónTrabajo computación
Trabajo computaciónandres22uio
 
Nissan
NissanNissan
Nissanhmnava
 
Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informaticaluis carlos
 
Generacioooooooooooooooooooooooooooooooon
GeneracioooooooooooooooooooooooooooooooonGeneracioooooooooooooooooooooooooooooooon
Generacioooooooooooooooooooooooooooooooonhelene3
 
Lo que hay que tener en cuenta al escribir un texto argumentativo
Lo que hay que tener en cuenta al escribir un texto argumentativoLo que hay que tener en cuenta al escribir un texto argumentativo
Lo que hay que tener en cuenta al escribir un texto argumentativoG. Paredes
 

Destacado (20)

Gebeurtenis
GebeurtenisGebeurtenis
Gebeurtenis
 
Panduan toko online
Panduan toko onlinePanduan toko online
Panduan toko online
 
Grenzen van veiligheid e book
Grenzen van veiligheid e bookGrenzen van veiligheid e book
Grenzen van veiligheid e book
 
Toxicidad del polipropileno
Toxicidad del polipropilenoToxicidad del polipropileno
Toxicidad del polipropileno
 
MMORPG ESPM ADM4A
MMORPG ESPM ADM4AMMORPG ESPM ADM4A
MMORPG ESPM ADM4A
 
Legislación vigente
Legislación vigenteLegislación vigente
Legislación vigente
 
como agregar espacio a un disco lleno
como agregar espacio a un disco llenocomo agregar espacio a un disco lleno
como agregar espacio a un disco lleno
 
методические указаня по написанию курсовой
методические указаня по написанию курсовойметодические указаня по написанию курсовой
методические указаня по написанию курсовой
 
бланк тэ рп уд од
бланк тэ рп уд одбланк тэ рп уд од
бланк тэ рп уд од
 
Задротен
ЗадротенЗадротен
Задротен
 
Presentacions amb programari lliure
Presentacions amb programari lliurePresentacions amb programari lliure
Presentacions amb programari lliure
 
Documento 24lkjlkjkl
Documento 24lkjlkjklDocumento 24lkjlkjkl
Documento 24lkjlkjkl
 
Fotos do trabalho de inglês
Fotos do trabalho de inglêsFotos do trabalho de inglês
Fotos do trabalho de inglês
 
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà NiafMarco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
Marco Simeon (Rai), Riconoscimento Speciale al 37° Galà Niaf
 
Trabajo computación
Trabajo computaciónTrabajo computación
Trabajo computación
 
Sermão
SermãoSermão
Sermão
 
Nissan
NissanNissan
Nissan
 
Trabajo de informatica
Trabajo de informaticaTrabajo de informatica
Trabajo de informatica
 
Generacioooooooooooooooooooooooooooooooon
GeneracioooooooooooooooooooooooooooooooonGeneracioooooooooooooooooooooooooooooooon
Generacioooooooooooooooooooooooooooooooon
 
Lo que hay que tener en cuenta al escribir un texto argumentativo
Lo que hay que tener en cuenta al escribir un texto argumentativoLo que hay que tener en cuenta al escribir un texto argumentativo
Lo que hay que tener en cuenta al escribir un texto argumentativo
 

Último

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Último (20)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

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