渴望加载第一协会

时间:2013-04-22 16:22:34

标签: ruby-on-rails-3

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

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

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

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

1 个答案:

答案 0 :(得分:1)

使用SQL order byjoinlimitActiveRecord查询将如下所示:

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

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