ActiveRecord условия ассоциации (Rails) - PullRequest
0 голосов
/ 17 июня 2009

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

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

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

Что я пишу в области комментариев?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 июня 2009

Вы можете просто присоединиться к вашей таблице комментариев, убедившись, что выделены отдельные строки

named_scope :with_comments, :joins => :comments, :select => 'DISTINCT posts.*'
1 голос
/ 17 июня 2009

Лучше было бы поставить counter_cache на Post.

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

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

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

...