【发布时间】:2013-07-18 04:44:55
【问题描述】:
我有桌子:
+----+----------------------+---------------------+
| 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。
【问题讨论】:
-
我不熟悉 ActiveRecord,但也许您需要像在常规 SQL 查询中那样为
sum(implemented_features)提供别名。 -
你说这个“行不通”,但你没有包括它是如何行不通的。你有错误吗?什么错误?你得到错误的结果吗?
-
您需要在查询中包含 id 以获取活动记录吗?
Summary.select("id, date(created_at) as date, ... -
没关系,我现在明白你的意思了。为你写一个答案:)
-
@henrikhodne 见上面的代码。我得到
#<ActiveRecord::Relation [#<Summary id: nil>]>@Mike,不,我不需要行中的id。我试过你的例子。并获取#<ActiveRecord::Relation [#<Summary id: 1>]>
标签: mysql ruby-on-rails activerecord rails-activerecord