2015-01-26 30 views
1

我有很多帖子有多條評論,但是我需要顯示包含每條帖子的所有信息和最新評論的帖子。只對Rails和MySql中的每個帖子預加載最新評論

用一個簡單的方法,我有每個帖子的額外請求評論表。

如何獲得最近評論沒有N + 1問題的帖子列表?

我的情況很常見 - 帖子列表和最新評論。

回答

1

您可以使用.includes快速加載您認識的將要使用的對象。我認爲我的邏輯是正確的,你會得到一個唯一的帖子列表,其中至少有一條評論符合你的標準。

def recently_updated_posts  
    comments = Comment.includes(:post).where("updated_at > ?", some_time) 
    list_of_posts = posts.comments.map { |c| c.post } 
    return list_of_posts.uniq! 
end 

您可以通過具有嵌套進一步降低查詢負載包括語句,因爲愚蠢的,因爲它看起來:

Comment.includes(posts: :comments).where("updated_at > ?", some_time) 

這裏更多:Rails - Nested includes on Active Records?

+0

感謝信息有關嵌套包括 - 這真的很有用,但在我的情況下,我需要獲得帶有和沒有評論的帖子,並且評論必須是最後的,由Id排序。 – maksfromspb 2015-01-27 21:20:04