SlideShare una empresa de Scribd logo
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

PPTX
Beef framework
PPTX
Beef framework
PPT
Velazquez Abel Aceves 2º A
PPT
Nueva Colección Figuras Decorativas
DOCX
Gep2009 Eq1 T11 Herramientas Gido
PPT
Trabajo de investigación acción
PPS
Mianmar Birmania
Beef framework
Beef framework
Velazquez Abel Aceves 2º A
Nueva Colección Figuras Decorativas
Gep2009 Eq1 T11 Herramientas Gido
Trabajo de investigación acción
Mianmar Birmania

Destacado (20)

PPT
Communitymanager online msncor_pv3_junio2013
PDF
El mapa mental y la realidad
PPTX
accedirbloc
PPTX
Presentación Merce
PPT
Facebookparaempresas limainnova municipalidaddelima_agosto2014
PPT
Especificación GxFIT - Defensa Tesis Maestría
PPT
Normativa laboral
PPT
Renuncia a ser adulto
ODP
Cereales sin gluten
PPT
Adn extracción
PPT
Conducción política
PPT
PPSX
Día de Andalucía: Almeria Córdoba
PDF
Reunió inici de curs 6è 2012.2013
PPTX
Cancer Tiroides
PPT
Open data listo
PPT
Gpt cpe gerentes estrategicos
PPT
Cursoonline iii comoganarclientesporinternet_20_octubre_2014
PPTX
Presentacion SEO
Communitymanager online msncor_pv3_junio2013
El mapa mental y la realidad
accedirbloc
Presentación Merce
Facebookparaempresas limainnova municipalidaddelima_agosto2014
Especificación GxFIT - Defensa Tesis Maestría
Normativa laboral
Renuncia a ser adulto
Cereales sin gluten
Adn extracción
Conducción política
Día de Andalucía: Almeria Córdoba
Reunió inici de curs 6è 2012.2013
Cancer Tiroides
Open data listo
Gpt cpe gerentes estrategicos
Cursoonline iii comoganarclientesporinternet_20_octubre_2014
Presentacion SEO
Publicidad

Último (20)

PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
taller de informática - LEY DE OHM
PPT
Que son las redes de computadores y sus partes
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Maste clas de estructura metálica y arquitectura
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
Estrategia de apoyo tecnología grado 9-3
Influencia-del-uso-de-redes-sociales.pdf
Estrategia de apoyo tecnología miguel angel solis
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
CyberOps Associate - Cisco Networking Academy
Presentación PASANTIAS AuditorioOO..pptx
taller de informática - LEY DE OHM
Que son las redes de computadores y sus partes
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Plantilla para Diseño de Narrativas Transmedia.pdf
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Maste clas de estructura metálica y arquitectura
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Calidad desde el Docente y la mejora continua .pdf
Publicidad

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