如何解决无法选择按created_at分组的行
我认为您对控制台输出感到有些困惑。
你是这样说的:
Summary.select("date(created_at) as date, sum(implemented_features)")...
因此返回的Summary
实例(包含在中ActiveRecord::Relation
)没有任何常规Summary
属性:no id
,nocreated_at
,noimplemented_featured
等。当您调用inspect
ActiveRecord对象时,它想向您显示该对象内部的内容,这意味着它想要向您显示所包含的数据库属性;您的Summary
实例没有任何通常的属性,因此您会看到类似的信息<Summary
id: nil>
。
不用担心,您选择的值确实存在。如果你说:
Summary.select(...).map(&:date)
您应该看到这些date(created_at) as
date
值。如果为添加别名,sum(implemented_features)
则可以使用该别名作为方法名称来提取总和。
解决方法
我有桌子:
+----+----------------------+---------------------+
| id | implemented_features | created_at |
+----+----------------------+---------------------+
| 1 | 19 | 2013-07-18 04:10:12 |
| 2 | 6 | 2013-07-18 04:10:12 |
| 3 | 26 | 2013-07-19 04:10:12 |
| 4 | 11 | 2013-07-19 04:10:12 |
| 5 | 1 | 2013-07-20 04:10:12 |
+----+----------------------+---------------------+
当我直接通过MySQL查询时,它可以按我的要求完美运行
select date(created_at) as date,sum(implemented_features) as sum from summaries group by date(created_at);
但是,当我尝试将此查询转换为ActiveRecord语法时,它返回nil。
2.0.0p0 :035 > Summary.select("date(created_at) as date,sum(implemented_features)").group("date(created_at)")
Summary Load (0.5ms) SELECT date(created_at) as date,sum(implemented_features) FROM `summaries` GROUP BY date(created_at)
=> #<ActiveRecord::Relation [#<Summary id: nil>]>
如您所见,两个示例中的最终查询均相等。为什么在ActiveRecord情况下不起作用?
在我的rails项目中使用Rails 4.0.0,Ruby 2.0和mysql db。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。