我有一个带有闲置列的报告表: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
在一个循环中吗?还是有更好的方法?
再次感谢你。