2010-08-17 20 views
1

Dans mon application Rails j'ai des modèles qui ressemblent à ceci:question polymorphique assosciation

class Blog < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :blog 
end 

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

Ce que je vais avoir un problème est maintenant de trouver tous les commentaires dans un blog spécifique. Quelqu'un peut-il voir une solution à cela?

Meilleures salutations, Erik

+0

Comment essayez-vous de trouver les commentaires? Pouvez-vous poster ce code pour nous? Si vous recevez des messages d'erreur dans la console, quels sont les messages d'erreur? – sosborn

+0

Je ne comprends pas pourquoi voulez-vous utiliser des associations polymorphes? – Bohdan

+0

Bonjour! J'utilise une assosciation polymorphe parce que dans le futur je veux permettre des commentaires sur d'autres objets que des messages ... – Erik

Répondre

0

Salut les connexions Tout d'abord

class Blog < ActiveRecord::Base 
    has_many :posts 
end 

class Post < ActiveRecord::Base 
    belongs_to :blog 
    has_many :comments, :as=>:commentable #Post.first.comments or Blog.posts.first.comments 
end 

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

obtenir tous les commentaires

comments=[] 
Blog.first.posts.each do |post| 
    comments = comments | post.comments 
end 
+0

Merci, je connais cette solution. Le problème est que cela nécessiterait que je reçoive d'abord tous les messages, puis que je les contourne tous. Je préférerais trouver une méthode où je peux les faire passer par SQL ... – Erik