0

我有一个Story模型和一个Post模型。每个故事都有很多帖子,每个帖子都属于一个故事。

当我将特定故事从数据库加载到内存中时,我想急切地加载该故事的最新帖子。这是我现在的做法:

@story = Story.includes(:posts).find(params[:story_id])
@latest_post = @story.posts.first  #Note, story.posts :order => "created_at DESC"

这可行,但是当我只需要最近的帖子时,将所有故事的帖子加载到内存中似乎不是很有效。有没有办法限制includes只急切地加载第一篇文章?我应该担心这个吗?

4

1 回答 1

1

使用SQLorder byjoin. limit查询将ActiveRecord如下所示:

@latest_post = @story.include(:posts).order("created_at DESC").limit(1)

这将创建一个包含帖子的连接,按最新帖子排序并获取一个。

于 2013-04-22T17:16:49.940 回答