0

这里简单的问题。

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

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

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

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

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

我该怎么做呢?

4

1 回答 1

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)
于 2012-08-01T03:02:23.903 回答