【问题标题】:Get n most recent records in a foreign key's table (Rails ActiveRecord)获取外键表中的 n 条最新记录 (Rails ActiveRecord)
【发布时间】:2012-08-01 02:50:00
【问题描述】:

这里是一个简单的问题。

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

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

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

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

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

我该怎么做?

【问题讨论】:

    标签: ruby-on-rails database activerecord model


    【解决方案1】:

    使用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)
    

    【讨论】:

    • 谢谢。不过,goals 旁边需要一个冒号。 :)
    猜你喜欢
    • 1970-01-01
    • 2010-09-30
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 2022-12-07
    • 1970-01-01
    相关资源
    最近更新 更多