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 に答える