STI y polymorphic


#1

Hola,
tengo una duda que me está llevando de cabeza. Estoy utilizando STI:

          Post
         ----
             |
  |--------|
  |                   |

microPost Article

En la tabla Post, tengo el campo ‘type’ que valdrá ‘microPost’ o
‘Article’, dependiendo de que guarde. Mis problemas vienen a la hora de
crear comentarios:

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

He añadido al modelo microPost y Article lo siguiente:

has_many :comments, :as => : commentable, :dependent => :destroy

Mis dudas:

  1. Cuando creo un comentario, por ejemplo
    @article.comments.create(params[:comment]), el campo ‘commentable_type’
    se rellena con ‘Post’ y no con ‘Article’. Podría forzar a
    @article.comments.build(params[:comment].merge(:commentable_type =>
    “Article”)) pero ¿Se tiene que hacer así realmente? Me parece una
    solución algo extraña.

  2. ¿Como podría conocer que usuarios han comentado un artículo?

Muchas gracias a todos.


#2
  1. ¿Como podría conocer que usuarios han comentado un artículo?

La tabla comments tiene estos campos:

commentable_type
commentable_id
user_id