我正在构建一个时间表/项目管理应用程序。用户被分配到项目。作业有开始和结束日期。
时间表具有week_ending_date
用于标识创建时间表的星期(涵盖所有 7 天)。
我需要找到的是没有时间表的周(用户分配了项目)。
我的解决方案是什么?
我想过这样做:
dates = []
assignments = user.project_assignments.pluck("assignment_start_date, assignment_end_date")
assignments.each do |assignment|
dates << (assignment[0]..assignment[1]).to_a
end
dates.flatten!
获取时间表必须可用的日期。现在我做,
Timesheet.all.select('week_ending_date').uniq.map(&:week_ending_date)
现在使用这些 week_ending_dates,我可以找到每周的日期。然后我可以从前一个中减去这个dates
。
这是一个好的解决方案还是有更好的解决方案?
- 如果没有带有“week_ending_date”的时间表,则称一周为空
- 一周从星期一开始,到星期日结束
- 数据库是 MySQL
- 导轨 4.0 / 红宝石 2.0