我有一个日历,我想将这些数据分组。所以我在控制器中有这个
@entry_by_date = Entry.where("emp_mail_addr = ? and emp_first_name = ? and emp_last_name = ? and emp_dept = ?", current_user.email, current_user.emp_first_name, current_user.emp_last_name, current_user.emp_dept).group_by {|i| i.leave_start.to_date}
@date = params[:date] ? Date.parse(params[:date]) : Date.today
问题是@entry_by_date我有.group_by {| i | i.leave_start.to_date} 我怎么能让它有两个日期组,例如....
@entry_by_date ........ group_by {| i | i.leave_start.to_date} {| i | i.leave_end.to_date}
所以它现在将由leave_start和leave_end分组,所以现在我的日历上会显示离开开始和离开结束日期..
我试过这样做
@entry_by_date = Entry.where("emp_mail_addr = ? and emp_first_name = ? and emp_last_name = ? and emp_dept = ?", current_user.email, current_user.emp_first_name, current_user.emp_last_name, current_user.emp_dept).group_by {|i| i.leave_start.to_date}
@entry_by_date = Entry.where("emp_mail_addr = ? and emp_first_name = ? and emp_last_name = ? and emp_dept = ?", current_user.email, current_user.emp_first_name, current_user.emp_last_name, current_user.emp_dept).group_by {|i| i.leave_end.to_date}
但是只留下开始出现或者如果我切换它们就会出现结束。我想两者都出现,建议非常感谢!!!!
谢谢!
答案 0 :(得分:2)
请注意group_by
和group
API之间存在重大差异 - 前者适用于列表(之后从数据库中提取) ,而后者用于数据库查询本身(添加GROUP BY
子句)
我不确定您要实现的目标,但如果您希望将您的论坛的密钥设为日期数组,则可以在一个group_by
中完成块:
@entry_by_date = entries.group_by { |i| [i.leave_start.to_date, i.leave_end.to_date] }
如果您希望将每个条目分组两次(一次包含其开始日期,一次包含其结束日期),则需要创建2个分组的地图,并且 join 他们:
entry_by_start_date = entries.group_by {|i| i.leave_start.to_date}
entry_by_end_date = entries.group_by {|i| i.leave_end.to_date}
@entry_by_date = entry_by_start_date.merge(entry_by_end_date) {|key, oldval, newval| newval + oldval}