这里的简单问题。
我有一张User表。每个用户都有很多目标。每个目标都有许多目标。每个目标都有一个created_at
列。
我想获得为用户创建的10个最新目标(无论任何特定目标),但我不确定如何构建ActiveRecord查询。
我知道如何获得最近的10个目标。您将执行以下操作:
Objective.find(:all, :limit => 10, :order => 'created_at desc')
但我不知道如何获得特定用户的10个最新目标(即来自用户 - >目标 - >目标)。
我该怎么做?
答案 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)