【Rails5】impressionistを使ってページビューのランキングを作る

rails pv impressionist gem

ページビュー数の計測ができる「impressionist」というgemを導入します。ip_addressやsession_hashなどの情報を取得してくれるので、ユニークユーザー数が計測できます。本記事ではscaffoldでサンプルを用意して、PV数でランキングを作るところまでやってみたいと思います。

impressionist
https://github.com/charlotte-ruby/impressionist

バージョンはこちらです

準備

scaffoldでサンプルとなる環境を作ります。対象テーブルにPV数を格納する impressions_count カラムを作りintegerにしておきます。

生成されたマイグレーションファイルにimpressions_count カラムに デフォルト値を 0 に設定しておきます。

db/migrate/20xxxxxxxxxx_create_users.rb

Gemfile

$ bundle install して次の generate コマンドを実行します。

このコマンドだけで下記のマイグレーションファイルを生成してくれます。

db/migrate/20xxxxxxxx_create_impressions_table.rb

Models

対象となるモデルクラスに :counter_cache オプション追加します。

app/models/user.rb

Controllers

app/controllers/users_controller.rb

Views

app/views/users/show.html.erb

ブラウザをロードしてみるとImpressionのカラムにそれぞれデータが格納され、Userのimpressions_countが + 1 になりました。

rails impressionist

PVランキングを作る

次にページビュー数でランキングを作ってみます。本記事は表示用のサンプルとして、Userテーブルにseedデータを流しますが、実際にはImpressionテーブルのそれぞれのカラムにもデータが必要ですので、実際の運用には、それぞれの環境に合わせて行ってください。

db/seeds.rb

app/controllers/users_controller.rb

app/views/users/index.html.erb

rails impressionist rank

はい、これでトップ10のランキングができました!!また機会があれば週毎・月毎などの一定期間ごとのランキングの実装もしてみたいなと思います。
ご覧いただき、ありがとうございました!!


投稿者:

Shuji

読書したり、プログラミングしたりしています。何かアウトプットできそうなものがあれば投稿していきたいと思います。