Polymorphics Associations Seguimos Reutilizando Tablas por Nelson Rojas Núñez
El problema posts pages ads post_comments page_comments 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 ads comments 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:text commentable_id:integer commentable_type:string rake db:migrate La Clase class Comment 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 => # >> p.comments => [] >> p.comments.count => 0 >> c = p.comments.build => # >> 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 => [# ] >>
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 polymorphic-association/ polymorphic-association/