gpt4 book ai didi

mysql - Rails 4 按功能分组不起作用

转载 作者:行者123 更新时间:2023-11-29 13:03:39 25 4
gpt4 key购买 nike

我有下表

员工

字段是

  • ID
  • 年度休假总数
  • group_id(外籍)

我通过查询编写了一个简单的求和组,声明获取按 group_id 分组的 Annual_leave_totals 的总和,即

Employee.select("department_id, sum(annual_leave_total)").group(:group_id)

但是我在控制台中得到的是以下内容

irb(main):010:0> Employee.select("group_id, sum(annual_leave_total)").group(:group_id)
Employee Load (1.0ms) SELECT group_id, sum(annual_leave_total) FROM "employees" GROUP BY group_id
=> #<ActiveRecord::Relation [#<Employee id: nil, group_id: 1>, #<Employee id: nil, group_id: 2>, #<Employee id: nil, group_id: 3>]>

为什么它返回这种哈希类型的结果?它与实际 sql 查询中的预期不同...

有什么想法吗?

最佳答案

就像我在另一个问题 ( when i was using find_by_sql alias, i got confused ) 中所写的那样,AREL 只是尝试将您的查询映射到 Employee 模型。由于您从 Employee 类作为基础开始查询,因此您将获得此类型的对象。

在您的查询中,您仅选择了group_id(该类的属性)以及其中一个属性的总和(但不是属性本身!)。现在请记住,您打印出来的只是 Employee 对象的 to_s 表示形式,该对象只知道您在帖子中列出的自己的属性。它不知道名为 sum(annual_leave_total) 的属性,因此不会打印它。

但是,仍然可以通过调用 employee.first.attributes 通过属性哈希来访问该值。散列应包括所有类属性(大多数为 nil,因为您没有选择它们)以及其他属性。总和值没有 getter,因为它不是该类的“官方”属性。

关于mysql - Rails 4 按功能分组不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23014521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com