【问题标题】:Rails 3 query specific data from multiple modelsRails 3 从多个模型中查询特定数据
【发布时间】:2016-01-20 19:20:26
【问题描述】:

这是我的两个模型:

class Account < ActiveRecord::Base
 has_many :values
end

class Value < ActiveRecord::Base
 belongs_to :account
end

在我的帐户模型中,我有一个 :name 属性和一个 :type 属性,我可以在其中选择“检查”或“储蓄”。每年的每个季度,我都会为每个帐户记录一个金额,这适用于价值模型。值模型有一个 :quarter 属性(1、2、3 或 4)、一个 :year 属性和一个 :amount 属性。有些帐户在一年中的每个季度都会更新,有些则不会。例如,我可以有一个支票账户,其值为 2010 年第 1、2、3 和第 4 季度,然后是另一个支票账户,其值为仅第 1 和第 2 季度。每次输入一个季度,它只是对上一个季度的更新,而不是运行累计总数。

我想要做的是运行一个查询,该查询将显示我去年针对特定账户类型“支票”或“储蓄”的平均账户价值。我正在努力解决的问题是我不能只运行一个查询并计算全年,因为只有最后输入的值(按:季度和:年排序)是实际值,而不是所有季度的总和.那么,例如,我如何遍历所有“检查”帐户并从最近输入的值条目中提取 :amount,无论是第一季度还是第四季度?

【问题讨论】:

    标签: ruby-on-rails-3 data-modeling


    【解决方案1】:

    我会使用 value 记录的 created_at 时间戳来排序结果。听起来您想要给定范围内的最新值记录。如果您不能按日期排序结果,您可以简单地按:quarter DESC 排序并使用第一个结果吗?

    不要忘记在 SQL 服务器端使用 AVG() 函数:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg

    也可以查看http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html

    【讨论】:

    • 那种。比如说我有 4 个支票账户,一个账户有第一个季度,另一个有第 1 和第 2 个,另一个有第 1、第 2 和第 3 个,最后一个账户输入了所有 4 个季度。我想根据每个帐户的最后一个条目对所有 4 个支票帐户的值进行平均。所以在这个例子中,这将是所有不同的季度。这更有意义吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多