我有一个带有休假列的报告表:id, project_id, key_id, position, created_at
。
用来填充图形的轻松代码(我现在拥有的代码)运行良好,但是我面临的问题是akey_id
具有多个位置,而我只想计算key_id
3个位置的a(例如)一次。我尝试使用,distinct
但是没有用。
谢谢
def self.chart_data(start = 1.weeks.ago, current_user)
positions = where("position <= 50").position_by_day(start, current_user)
(start.to_date..Date.today).map do |date|
{
created_at: date,
position: positions[date] || 0,
}
end
end
def self.position_by_day(start, current_user)
user_projects = Project.where(user_id: current_user.id).first
results = user_projects.reports.where(created_at: start.beginning_of_day..Time.zone.now)
results = results.group("date(created_at)")
results = results.select("date(created_at) as created_at, count(*) as count")
results.each_with_object({}) do |result, possitions|
possitions[result.created_at.to_date] = result.count
end
end
同样,要获取用户可以拥有的所有“键”,我需要为用户获取所有的“键”,projects
然后keys
在每个项目上循环获取所有的“键” 。我怎样才能做到这一点?我可以将其包装成results
一个循环吗?还是更好的方法?
再次感谢你。
用户将所有项目发送到此方法:
def self.position_by_day(start)
report = where(created_at: start.beginning_of_day..Time.zone.now)
report = report.group("date(created_at)").group(:key_id)
report = report.select("date(created_at) as created_at, count(*) as count, key_id")
result = report.count.inject ({}) do |hash, keydata|
hash[keydata[0][0]] ||= 0
hash[keydata[0][0]] += 1
hash
end
return result
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句