【发布时间】:2011-09-07 14:34:44
【问题描述】:
我有以下 SQL 代码:
SELECT u.full_name, pu.task_name, sum(hours)
FROM efforts
INNER JOIN project_tasks pu ON efforts.project_task_id = pu.id
INNER JOIN users u ON efforts.user_id = u.id
GROUP BY user_id, task_name
输出所有用户、他们的任务和他们的时间。我现在要做的是将其转换为 Rails 的 ActiveRecord 查询。
我试图让它看起来类似于我在下面所做的,但似乎无法让我的逻辑正确。
Project.all.each do |project|
projdata = { 'name' => project.project_name.to_s,
'values' => [] }
['Pre-Sales','Project','Fault Fixing','Support'].each do |taskname|
record = Effort.sum( :hours,
:joins => :project_task,
:conditions => { "project_tasks.project_id" => project.id,
"project_tasks.task_name" => taskname } )
projdata[ 'values' ].push( record )
end
@data.push( projdata )
end
end
end
添加图片链接
该链接说明了一个图表。我需要做的是将我的 SQL 语句转换为一个 activeRecord 查询,它将像我提供的其他图表一样显示它。
【问题讨论】:
-
我想把上面的 SQL 语句变成 RoR,这样当我把它实现成 highcharts 时,它会显示所有用户的任务和时间
-
为此,您需要展示您的 ActiveRecord 模型,因为从中生成了 SQL。但真正的问题是什么?究竟是什么问题?你需要更清楚一点..
-
上面的 SQL 工作......我需要让它“Ruby-fied” 我需要它看起来像上面变量“record”的代码。例如Effort.sum...等
-
您似乎试图获取每个用户在每项任务上花费的时间总和,对吗?因为它不是很清楚,我什至对你的 SQL 工作感到惊讶(你应该有类似 SUM(小时)的东西)。此外,您的表名不遵循 AR 约定,因此很难遵循
-
@m_x 你的权利,这就是我想要做的,对不起,它不是很清楚,我只是认为考虑到它在 SQL 中工作它会很容易转换......而且我确实有 SUM(小时)但忘了把它放进去..
标签: mysql sql ruby-on-rails ruby-on-rails-3