4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

gem impressionist を使ってユニークpv数を計測【Rails】

Last updated at Posted at 2019-06-26

ruby 2.5.1
rails 5.2.1

はじめに

impressionistを使ってpv数を計測しようと思い、色々調べながら実装するもなかなかユニークpv数が取得できずに苦戦していました。結果的にreadme(https://github.com/charlotte-ruby/impressionist) を見て解決したので、その記録として残しておきます。最初からreadme見ればよかった。。。

導入方法

Gemfile
gem 'impressionist'
$ bundle install

次にpvを保存するテーブルを作成します。

$ rails g impressionist

このようになっていれば大丈夫です。

Running via Spring preloader in process 40810
      invoke  active_record
      create    db/migrate/20190626153731_create_impressions_table.rb
      create  config/initializers/impression.rb

migrateします。

$ rails db:migrate

Model

今回はQ&Aサイトの質問ページのpv数を取得したいためQestionモデルに以下のように記載します。

question.rb
class Question < ApplicationRecord
  is_impressionable
end

Controllers

セッションハッシュでフィルタリングされたモデルからユニークpv数を取得します。IPで判別すると同じIPを使用する訪問者を計測できないのでセッションハッシュで判別するのがいいっぽいです。

question_controller.rb
class QuestionsController < ApplicationController
  impressionist unique: [:session_hash]

  def show
    @question = Question.find(params[:id])
    impressionist(@question, nil, unique: [:session_hash])
  end
end

Views

show.html.erb
<%= @question.impressionist_count %>
スクリーンショット 2019-06-27 2.08.00.png

更新してもテーブルのレコードや表示されるpv数が増えていなければ完璧。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?