TimeEntryからactivity_idの数で順位付けして、
よく使われるものを上に持って来ようと思って色いろ調べた。
TimeEntry.count(:group=>"activity_id").sort{|a,b| b[1]<=>a[1]}
これで、Activity と その使われてる数 の配列の配列が取得できる。
次にその配列を回して、TimeEntryActivityを順番にとるだけで実現できる。
あとactiveなものだけを取得。
TimeEntry.count(:group=>"activity_id").sort{|a,b| b[1]<=>a[1]}.map{|ai| ((tea = TimeEntryActivity.find(ai.first)) && tea.active) ? tea : nil }.compact
さて、ここまで調べて実際にどう TimeEntryActivity を取得してるのか見てみたら…
TimeEntryActivity.shared.active
・・・どう別の処理を差し込んだものか。
スポンサーサイト