2012-08-01 109 views
0

簡單的問題在這裏。在外鍵的表中獲取n條最近的記錄(Rails ActiveRecord)

我有一個用戶表。每個用戶都有很多目標。每個目標都有很多目標。每個目標有一個created_at列。

我想獲得爲用戶創建的10個最新目標(不管具體目標如何),但我不確定如何構造ActiveRecord查詢。

我知道如何獲得10個最近的目標。你會做到以下幾點:

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

但我不知道怎麼去最近的10個目標爲特定用戶(即從用戶去 - >目標 - >目標)。

我該怎麼做?

回答

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) 
+0

感謝。不過,「目標」在它旁邊需要冒號。 :) – 2012-08-01 08:05:05

+0

糟糕,糾正了錯字,謝謝 – 2012-08-01 12:45:16

相關問題