Вопрос

Представьте, что у меня есть модель, сообщение, в котором есть_много: комментариев.Как я могу отображать только сообщения с комментариями?

Меня несколько устраивает именованный_скоп, но я не знаю, как поместить Post.comments (или self.comments) в хэш :conditions, который ожидает символы.

class Post < ActiveRecord::Base
     has_many :comments
     named_scope :with_comments, :conditions => [#self.comments.length > 0]
end

Что мне написать в комментариях?

Спасибо!

Это было полезно?

Решение

Возможно, лучше было бы разместить counter_cache в Post.

class Comment < AR:Base
  belongs_to :post, :counter_cache => true
end

Тогда вам нужно будет выполнить всего один запрос вместо двух.

Post.find(:all, :conditions => ["counter_cache > 0"])

Другие советы

У вас должна быть возможность просто присоединиться к таблице комментариев, выбрав отдельные строки.

named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top