我使用 activerecord 将一些 Timesheet 对象组合在一起
scope :grouped_by_user_with_total_time, lambda {
group(:user_id, :day).select('user_id, SUM(time_worked) AS time_total, day, editable, approvable, accepted, comments')
}
在我这样做之后,现在当我尝试在分组对象上调用批准方法时,我得到了错误
Couldn't find TimeSheet without an ID
它突出了我方法中的第三行
def approve
if params[:time_sheets]
@time_sheets = []
*t = TimeSheet.find(params[:time_sheets])**
if t.instance_of?(Array)
@time_sheets = t
else
@time_sheets << t
end
successful = []
unsuccessful = []
@time_sheets.each do |timesheet|
unless timesheet.approved
timesheet.approve
if timesheet.save
successful << timesheet
else
unsuccessful << timesheet
end
end
end
end
我对 activerecord 不是很有经验,并且很好奇分组如何影响方法,以及我需要做什么才能使方法可以从它们刚刚获取单个对象的位置到方法将在所有对象上起作用的位置分组的对象。