1

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

そして、それは私のメソッドの3行目を強調しています

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

私はアクティブレコードの経験があまりないので、グループ化がメソッドにどのように影響するか、メソッドが個々のオブジェクトを取得する前からメソッドがすべてのオブジェクトで機能する場所に移動できるようにするために何をする必要があるのか​​ に興味がありますグループ化されたオブジェクト。

4

0 に答える 0