activerecord condições de uma associação (trilhos)
-
05-07-2019 - |
Pergunta
Fingir Eu tenho um modelo, cargo que has_many: comentários. Como posso exibir apenas as mensagens que têm comentário?
Estou um pouco confortável com named_scope mas eu não sei como eu posso colocar post.comments (ou self.comments) no:. Condições de hash que espera símbolos
class Post < ActiveRecord::Base
has_many :comments
named_scope :with_comments, :conditions => [#self.comments.length > 0]
end
O que eu escreva na área comentou?
Obrigado!
Solução
Melhor poderia ser a de colocar um counter_cache no Post.
class Comment < AR:Base
belongs_to :post, :counter_cache => true
end
Em seguida, você só precisa fazer uma consulta em vez de dois.
Post.find(:all, :conditions => ["counter_cache > 0"])
Outras dicas
Você deve ser capaz de simplesmente juntar-se contra a sua mesa comentários, certificando-se de selecionar as linhas distintas
named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow