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!

Foi útil?

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
scroll top