Para tomar un ejemplo con el que todo el mundo está familiarizado, piense en StackOverflow. Un usuario has_many :questions
, has_many :answers
y sus preguntas y respuestas pueden ser comentadas. (El comentario es polimórfico).has_many a través de varios modelos con una fuente única
quiero conseguir todas las respuestas dirigidas a un usuario en particular a través de un comentario en cualquiera de las preguntas o respuestas de este usuario:
class User < ActiveRecord::Base
has_many :questions
has_many :answers
has_many :comments
has_many :responses, through: [:questions, :answers], source: :comments
end
class Question < ActiveRecord::Base
belongs_to :user
has_many :answers
has_many :comments, as: :commentable
end
class Answer < ActiveRecord::Base
belongs_to :user
belongs_to :question
has_many :comments, as: :commentable
end
class Comment < ActiveRecord::Base
belongs_to :commentable, polymorphic: true
end
Por supuesto, has_many :responses, through: [:questions, :answers], source: :comments
no funciona.
¿Hay alguna manera de que Rails lo haga?
Gracias.
Creo que esto ha sido respondida aquí: http://stackoverflow.com/questions/3487730/reverse-polymorphic-associations – DGM
@DGM Gracias pero por desgracia no. Por cierto, la respuesta aceptada no es realmente lo correcto para hacer IMO. – Damien
¿qué tal escribir condiciones sql en asociación? – blade