2014-11-23 74 views
2

我有兩個型號: 話題 評論獲取最新的N記錄爲每組

話題的has_many評論

我怎樣才能獲得最後的4條評論每個主題?

我試着用這一點,但速度很慢:

Comment. 
     joins("INNER JOIN (SELECT m1.id,m1.topic_id, COUNT(m2.id) as c FROM multimedias as m1 LEFT JOin multimedias as m2 ON 
     m1.topic_id = m2.topic_id AND m1.id < m2.id 
     WHERE m1.topic_id IS NOT NULL GROUP BY m1.id, m1.topic_id HAVING c < 4 
     ORDER by m1.topic_id, c desc) as m3 ON m3.id = multimedias.id"). 
     where([ "multimedias.topic_id IN (?)", topics_id ]) 
+0

我的答案在這裏有幫助嗎? – Anthony 2015-09-18 12:21:18

回答

0

#last方法取一個整數作爲參數,所以你可以只使用Comment.last(4)

0

ActiveRecord :: FinderMethods#Last

#last有一個可選論證者t允許您指定最後N個記錄,如下所示:

Comment. 
     joins("INNER JOIN (SELECT m1.id,m1.topic_id, COUNT(m2.id) as c FROM multimedias as m1 LEFT JOin multimedias as m2 ON 
     m1.topic_id = m2.topic_id AND m1.id < m2.id 
     WHERE m1.topic_id IS NOT NULL GROUP BY m1.id, m1.topic_id HAVING c < 4 
     ORDER by m1.topic_id, c desc) as m3 ON m3.id = multimedias.id"). 
     where([ "multimedias.topic_id IN (?)", topics_id ]). 
     last(4)