在外键表中获取n个最新记录(Rails ActiveRecord)

时间:2012-08-01 02:50:01

标签: ruby-on-rails database activerecord model

这里的简单问题。

我有一张User表。每个用户都有很多目标。每个目标都有许多目标。每个目标都有一个created_at列。

我想获得为用户创建的10个最新目标(无论任何特定目标),但我不确定如何构建ActiveRecord查询。

我知道如何获得最近的10个目标。您将执行以下操作:

Objective.find(:all, :limit => 10, :order => 'created_at desc')

但我不知道如何获得特定用户的10个最新目标(即来自用户 - >目标 - >目标)。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

使用has_many :through

class User < ActiveRecord::Base
  has_many :goals
  has_many :objectives, :through => :goals
end

现在,只要你做user.objectives,无论目标如何,你都可以获得用户的所有目标。

因此,为了获得最新目标:

user = User.find(your_id)
latest_objectives = user.objectives.order('created_at desc').limit(10)