提问人:Chakreshwar Sharma 提问时间:8/14/2023 更新时间:8/14/2023 访问量:21
Rails select 在执行 SQL 时没有给出正确的记录
Rails select is not giving the correct record while executing SQL
问:
我正在使用以下查询进行选择,但它没有给出正确的结果。TIMESTAMPDIFF
ActiveRecord
1.
Job.where(id: [1,2])
.group(:user_level)
.select("user_level, SUM((TIMESTAMPDIFF(MINUTE, start_datetime, end_datetime) - unpaid_break_time) / 60 * hourly_rate) AS income")
2.
Job.select("user_level, SUM((TIMESTAMPDIFF(MINUTE, start_datetime, end_datetime) - unpaid_break_time) / 60 * hourly_rate) as income")
.where(id: [1,2]).group(:user_level)
3.
Job.find_by_sql("
SELECT user_level, SUM((TIMESTAMPDIFF(MINUTE, start_datetime,end_datetime) - unpaid_break_time)/60 * hourly_rate) as income
FROM jobs
WHERE id IN (1,2)
GROUP BY user_level
")
这三个都给出相同的结果,即[#<Job id: nil, user_level: 0.33e1>]
预期:[{user_level: 0.33e1, income: 34}]
如果我执行从上面 3 中生成的 SQL,我得到了正确的结果。所以,查询是正确的。Workbench
另外,如果我使用 ,而不是 ,我得到了正确的结果,但在 Array 中返回数组。pluck
select
pluck
Job.where(id: [1,2]).group(:user_level)
.pluck("user_level, sum(((TIMESTAMPDIFF(MINUTE, start_datetime,end_datetime) - unpaid_break_time)/60 * hourly_rate)) as income")
那么,如何使用才能获得预期的输出呢?Select
注意:在上面的查询中,id:1,2只是例如,实际id是不同的。
答:
0赞
Siim Liiser
8/14/2023
#1
你试过打电话给工作吗()?.income
#<Job id: nil, user_level: 0.33e1>
Rails 获取所有返回的列并将它们分配给记录,但仅显示模型在控制台显示的默认值中实际具有的属性。.inspect
打电话给这份工作也应该给你一个哈希的收入。.attributes
评论