質問: 現在、以下のようなrankingモデルを作成し、ユーザーごとのゲームでのランキングを保存しております。(rails4系) このランキングをもとに、週一度、crontabを用いて集計をするプログラムを書いております。 ``` ---rankings--- user_id:integer point:integer -------------- ``` 集計をするところまではわかるのですが、 集計結果を画面側に表示させる方法で、一般的な方法がわからず質問させていただきました。 いわゆるバッチ処理?のため、アクセス毎に集計するわけではないため、 集計結果を保存するためのmodelを作成し、そこにデータをいれていこうかと思ってます。 まだ経験が浅いため、この方法でいいのかどうかわからず、かつ、この方法を取る際に、気をつけておいたほうがいいことなどありましたら教えていただけると幸いです。 また、ちなみに、crontabを用いて集計する際に、 crontabないでsqlを記述し、それを元に実行しておりますが、そういうやり方が一般的なのかも知りたいです・・・。 周りに詳しい方がおらず、なかなか判断がつかないまま着手してしまっております
回答: 一般的かどうかは分からないですが。 ランキング用のモデルとテーブル作って集計結果を保存するようなことはします。 表示はそれをただそのまま表示するだけです。 集計自体はrakeタスクを作って行います。その実行はcrontabで行います。 rakeタスクの例: ``` namespace :ranking do desc "ランキングの集計" task count_up: :environment do # 実際の処理 end end ``` crontabを操作するwheneverというgemがあり、それを使うと簡単にcrontabの設定が出来るのでオススメです。