SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
Polymorphics Associations

       Reutilizando Tablas
    por Nelson Rojas Núñez
   nelsonrojas.wordpress.com
El problema

posts                         post_comments


                              page_comments
pages



ads                           ad_comments



Todos los modelos tienen comentarios y lo usual (según la
teoría) es tener una tabla asociada por cada uno de los
modelos, es decir, cada cosa en su lugar.
El héroe

 posts



 pages                        comments



 ads

 Usar un modelo que permita asociaciones polimórficas, es
 decir, de más de un modelo.
Vamos al código

script/generate model comment content:textcommentable_id:integer commentable_type:string
rake db:migrate




La Clase
class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end




Las Asociaciones
class Entry < ActiveRecord::Base
    has_many :comments, :as => :commentable
end
En la consola
Loading development environment (Rails 2.3.2)
>> p = Page.first
=> #<Page id: 2, name: "mi primera pagina", type: "Page", created_at: "2009-11-12 11:41:08", updated_at: "2009-11-12 11:
41:08">
>> p.comments
=> []
>> p.comments.count
=> 0
>> c = p.comments.build
=> #<Comment id: nil, content: nil, commentable_id: 2, commentable_type: "Entry", created_at: nil, updated_at: nil>
>> c.content = "este es mi primer comentario en la pagina"
=> "este es mi primer comentario en la pagina"
>> c.save
=> true
>> p.comments.count
=> 1
>> p.comments
=> [#<Comment id: 2, content: "este es mi primer comentario en la pagina", commentable_id: 2, commentable_type: "Entry",
 created_at: "2009-11-12 16:57:25", updated_at: "2009-11-12 16:57:25">]
>>
Conclusión

Los modelos con asociación polimórficas son ideales para
aquellas situaciones donde necesitamos darle
comportamientos similares a nuestros modelos:
 ● Comentarios
 ● Votaciones
 ● Favoritos
 ● Rankeables
Enlaces

● http://maulanaruby.wordpress.com/2007/02/17/sti-vs-
  polymorphic-association/
● http://railscasts.com/episodes/154-polymorphic-association

Más contenido relacionado

Destacado

Communitymanager online msncor_pv3_junio2013
Communitymanager online msncor_pv3_junio2013Communitymanager online msncor_pv3_junio2013
Communitymanager online msncor_pv3_junio2013Sr. Zegarra Villalobos
 
El mapa mental y la realidad
El mapa mental y la realidadEl mapa mental y la realidad
El mapa mental y la realidadcrownred
 
Presentación Merce
Presentación MercePresentación Merce
Presentación Merceeridaura
 
Facebookparaempresas limainnova municipalidaddelima_agosto2014
Facebookparaempresas limainnova municipalidaddelima_agosto2014Facebookparaempresas limainnova municipalidaddelima_agosto2014
Facebookparaempresas limainnova municipalidaddelima_agosto2014Sr. Zegarra Villalobos
 
Especificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis MaestríaEspecificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis MaestríaAlejandro Araújo
 
Normativa laboral
Normativa laboralNormativa laboral
Normativa laboraltreball
 
Renuncia a ser adulto
Renuncia a ser adultoRenuncia a ser adulto
Renuncia a ser adultovirnamarie
 
Cereales sin gluten
Cereales sin glutenCereales sin gluten
Cereales sin glutenGarancita
 
Adn extracción
Adn extracciónAdn extracción
Adn extracciónsotolargo
 
Día de Andalucía: Almeria Córdoba
Día de Andalucía: Almeria CórdobaDía de Andalucía: Almeria Córdoba
Día de Andalucía: Almeria Córdobacolegioelatabalmalaga
 
Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013Toni Gomez
 
Open data listo
Open data listoOpen data listo
Open data listoooyola
 
Gpt cpe gerentes estrategicos
Gpt cpe gerentes estrategicosGpt cpe gerentes estrategicos
Gpt cpe gerentes estrategicosooyola
 
Cursoonline iii comoganarclientesporinternet_20_octubre_2014
Cursoonline iii comoganarclientesporinternet_20_octubre_2014Cursoonline iii comoganarclientesporinternet_20_octubre_2014
Cursoonline iii comoganarclientesporinternet_20_octubre_2014Sr. Zegarra Villalobos
 

Destacado (20)

Communitymanager online msncor_pv3_junio2013
Communitymanager online msncor_pv3_junio2013Communitymanager online msncor_pv3_junio2013
Communitymanager online msncor_pv3_junio2013
 
El mapa mental y la realidad
El mapa mental y la realidadEl mapa mental y la realidad
El mapa mental y la realidad
 
accedirbloc
accedirblocaccedirbloc
accedirbloc
 
Presentación Merce
Presentación MercePresentación Merce
Presentación Merce
 
Facebookparaempresas limainnova municipalidaddelima_agosto2014
Facebookparaempresas limainnova municipalidaddelima_agosto2014Facebookparaempresas limainnova municipalidaddelima_agosto2014
Facebookparaempresas limainnova municipalidaddelima_agosto2014
 
Especificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis MaestríaEspecificación GxFIT - Defensa Tesis Maestría
Especificación GxFIT - Defensa Tesis Maestría
 
Normativa laboral
Normativa laboralNormativa laboral
Normativa laboral
 
Renuncia a ser adulto
Renuncia a ser adultoRenuncia a ser adulto
Renuncia a ser adulto
 
Cereales sin gluten
Cereales sin glutenCereales sin gluten
Cereales sin gluten
 
Adn extracción
Adn extracciónAdn extracción
Adn extracción
 
Conducción política
Conducción políticaConducción política
Conducción política
 
Sesion 5
Sesion 5Sesion 5
Sesion 5
 
Día de Andalucía: Almeria Córdoba
Día de Andalucía: Almeria CórdobaDía de Andalucía: Almeria Córdoba
Día de Andalucía: Almeria Córdoba
 
Cultura china
Cultura chinaCultura china
Cultura china
 
Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013Reunió inici de curs 6è 2012.2013
Reunió inici de curs 6è 2012.2013
 
Cancer Tiroides
Cancer TiroidesCancer Tiroides
Cancer Tiroides
 
Open data listo
Open data listoOpen data listo
Open data listo
 
Gpt cpe gerentes estrategicos
Gpt cpe gerentes estrategicosGpt cpe gerentes estrategicos
Gpt cpe gerentes estrategicos
 
Cursoonline iii comoganarclientesporinternet_20_octubre_2014
Cursoonline iii comoganarclientesporinternet_20_octubre_2014Cursoonline iii comoganarclientesporinternet_20_octubre_2014
Cursoonline iii comoganarclientesporinternet_20_octubre_2014
 
Presentacion SEO
Presentacion SEOPresentacion SEO
Presentacion SEO
 

Similar a Polymorphics associations

Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdfRamonMartinespaa
 
Creación de varios_ proyectos_ en_una_solución_visual _studio_2010
Creación de varios_ proyectos_ en_una_solución_visual _studio_2010Creación de varios_ proyectos_ en_una_solución_visual _studio_2010
Creación de varios_ proyectos_ en_una_solución_visual _studio_2010Adriana Cabella
 
C:\Fakepath\Blogs En Internet
C:\Fakepath\Blogs En InternetC:\Fakepath\Blogs En Internet
C:\Fakepath\Blogs En Internetximenaespindola
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework SymfonyAlejandro Hernández
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelosdokeosla
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo2008PA2Info3
 
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente ♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente Manuel Vidaurre
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Karloz Dz
 
Implementando blogs usando Wordpress
Implementando blogs usando WordpressImplementando blogs usando Wordpress
Implementando blogs usando Wordpresscesars
 
Adapting HTML and CSS Templates to XOOPS
Adapting HTML and CSS Templates to XOOPSAdapting HTML and CSS Templates to XOOPS
Adapting HTML and CSS Templates to XOOPSxoopsproject
 
Adapting HTML and CSS Templates to XOOPS CMS
Adapting HTML and CSS Templates to XOOPS CMSAdapting HTML and CSS Templates to XOOPS CMS
Adapting HTML and CSS Templates to XOOPS CMSxoops
 
Cómo Migrar Tu Web a WordPress
Cómo Migrar Tu Web a WordPressCómo Migrar Tu Web a WordPress
Cómo Migrar Tu Web a WordPressNelio Software
 
Exposicion Taxonomia
Exposicion TaxonomiaExposicion Taxonomia
Exposicion Taxonomiadokeosla
 

Similar a Polymorphics associations (20)

Computación 1 y 3
Computación 1 y 3Computación 1 y 3
Computación 1 y 3
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Curso netcsharp
Curso netcsharpCurso netcsharp
Curso netcsharp
 
03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf03. Curso .NET con C# autor Universidad de Alicante.pdf
03. Curso .NET con C# autor Universidad de Alicante.pdf
 
Creación de varios_ proyectos_ en_una_solución_visual _studio_2010
Creación de varios_ proyectos_ en_una_solución_visual _studio_2010Creación de varios_ proyectos_ en_una_solución_visual _studio_2010
Creación de varios_ proyectos_ en_una_solución_visual _studio_2010
 
C:\Fakepath\Blogs En Internet
C:\Fakepath\Blogs En InternetC:\Fakepath\Blogs En Internet
C:\Fakepath\Blogs En Internet
 
Blogs En Internet
Blogs En InternetBlogs En Internet
Blogs En Internet
 
Introducción al framework Symfony
Introducción al framework SymfonyIntroducción al framework Symfony
Introducción al framework Symfony
 
Computación 1 y 3
Computación 1 y 3Computación 1 y 3
Computación 1 y 3
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
Patrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. JaramilloPatrones de diseño - Daniel E. Jaramillo
Patrones de diseño - Daniel E. Jaramillo
 
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente ♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
♬♪♬..I'm too sexy... ♫♪ catwalk... Como modelar el dominio efectivamente
 
Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]Patrones de diseño [DdA-2]
Patrones de diseño [DdA-2]
 
Implementando blogs usando Wordpress
Implementando blogs usando WordpressImplementando blogs usando Wordpress
Implementando blogs usando Wordpress
 
Manual del desarrollador
Manual del desarrolladorManual del desarrollador
Manual del desarrollador
 
Adapting HTML and CSS Templates to XOOPS
Adapting HTML and CSS Templates to XOOPSAdapting HTML and CSS Templates to XOOPS
Adapting HTML and CSS Templates to XOOPS
 
Adapting HTML and CSS Templates to XOOPS CMS
Adapting HTML and CSS Templates to XOOPS CMSAdapting HTML and CSS Templates to XOOPS CMS
Adapting HTML and CSS Templates to XOOPS CMS
 
Cómo Migrar Tu Web a WordPress
Cómo Migrar Tu Web a WordPressCómo Migrar Tu Web a WordPress
Cómo Migrar Tu Web a WordPress
 
Dreamweaver interfaz
Dreamweaver interfazDreamweaver interfaz
Dreamweaver interfaz
 
Exposicion Taxonomia
Exposicion TaxonomiaExposicion Taxonomia
Exposicion Taxonomia
 

Ú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
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (10)

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)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Polymorphics associations

  • 1. Polymorphics Associations Reutilizando Tablas por Nelson Rojas Núñez nelsonrojas.wordpress.com
  • 2. El problema posts post_comments page_comments pages ads ad_comments Todos los modelos tienen comentarios y lo usual (según la teoría) es tener una tabla asociada por cada uno de los modelos, es decir, cada cosa en su lugar.
  • 3. El héroe posts pages comments ads Usar un modelo que permita asociaciones polimórficas, es decir, de más de un modelo.
  • 4. Vamos al código script/generate model comment content:textcommentable_id:integer commentable_type:string rake db:migrate La Clase class Comment < ActiveRecord::Base belongs_to :commentable, :polymorphic => true end Las Asociaciones class Entry < ActiveRecord::Base has_many :comments, :as => :commentable end
  • 5. En la consola Loading development environment (Rails 2.3.2) >> p = Page.first => #<Page id: 2, name: "mi primera pagina", type: "Page", created_at: "2009-11-12 11:41:08", updated_at: "2009-11-12 11: 41:08"> >> p.comments => [] >> p.comments.count => 0 >> c = p.comments.build => #<Comment id: nil, content: nil, commentable_id: 2, commentable_type: "Entry", created_at: nil, updated_at: nil> >> c.content = "este es mi primer comentario en la pagina" => "este es mi primer comentario en la pagina" >> c.save => true >> p.comments.count => 1 >> p.comments => [#<Comment id: 2, content: "este es mi primer comentario en la pagina", commentable_id: 2, commentable_type: "Entry", created_at: "2009-11-12 16:57:25", updated_at: "2009-11-12 16:57:25">] >>
  • 6. Conclusión Los modelos con asociación polimórficas son ideales para aquellas situaciones donde necesitamos darle comportamientos similares a nuestros modelos: ● Comentarios ● Votaciones ● Favoritos ● Rankeables
  • 7. Enlaces ● http://maulanaruby.wordpress.com/2007/02/17/sti-vs- polymorphic-association/ ● http://railscasts.com/episodes/154-polymorphic-association