2016-01-11 3 views
0

У меня есть две модели, post и commentRails рамки с присоединиться к

мне нужен объем на post под названием in_use, который определяется как, где существует комментарии для этой должности. Я уверен, что это совершенно просто, но мой разум пуст!

так что мне нужно, чтобы быть в состоянии сделать что-то вроде

Post where post.comments.count > 0 

, но понятия не имею, как это сделать это в рамках?

ответ

1
scope :in_use, -> { includes(:comments).where("post.comments <> ''") } 
+0

Это абсолютно не верно sql и не будет работать. –

2

Лучший оптимизированный способ сделать это:

scope :in_use, -> { where("exists (select * from comments where post_id=posts.id)") } 

Это будет оптимизировать хорошо в любом RDBMS, и он будет оптимизировать, если запрос прикован.

Смежные вопросы