【发布时间】:2019-12-21 06:38:48
【问题描述】:
我的 Rails 应用中有这两个模型:
class Person < ApplicationRecord
has_many :payments
end
class Payment < ApplicationRecord
belongs_to :person
end
如何将payments 分组person 并按amount 排序?
现在我有...
Payment.group(:person_id).sum("amount")
...有效,但不包括人名。它返回如下内容:
{ 1 => 1200.00, 2 => 2500.00 }
如何将IDs / 整数替换为人名,并按amount 对整个内容进行排序?
感谢您的帮助!
【问题讨论】:
-
这些 ID 是记录 ID。您需要将它们取回或使用更具体的
pluck()。 -
您真正想要的数据级别只是名称 => 值可以接受还是您正在寻找正式对象
-
@engineersmnky:抱歉回复晚了。我实际上需要
{name => value, name => value}格式的哈希来创建由 Chart.js 提供支持的图表。感谢您到目前为止的回答,我仍在尝试找出哪个是最好的。 -
这会很棘手,除非你能保证这个人的名字永远是唯一的。
-
Hash 的键必须是唯一的,因此根据 Hash 的构造方式,可能会发生以下两种情况之一 1) 第二个键将覆盖第一个键 2) 它们将在一个键下相加你会丢失一个人的记录,同时复合另一个人的付款
标签: ruby ruby-on-rails-3 activerecord