0

Railsでこのような統計を取得するにはどうすればよいですか?

  1. /page/1、/page/2 などのページのユニーク ビュー数
  2. 彼らはどの国の出身ですか?

これらのページの下にこの情報を表示したいので、外部ライブラリを使用したくありません。これを実行できる ruby​​ gem があればいいのですが。

ありがとう

EDIT 1 - https://github.com/jkrall/analyticalのような 1-2 の宝石を見ることができますが、それでも SO コミュニティに尋ねると考えられます

EDIT 2 - 上記の宝石は私が探しているものではないと思います。サードパーティの分析を既存のアプリに挿入するだけのようです

4

1 に答える 1

6

Geocoder gem を Gemfile に追加し、 bundle install.

との属性を持つVisitモデルを作成します。pageip_addresslocation

問題のページについては、関連するコントローラーに before フィルターを配置するか、すべてのページへのアクセスを記録する場合は、ApplicationController に配置します。

def record_visit
  Visit.create(page: request.fullpath, ip_address: request.ip, location: request.location.country_code)
end

Geocoder gem はlocationリクエスト オブジェクトにメソッドを追加するため、国コード以外の情報が必要な場合はドキュメントを参照してください。

次に、コントローラーの before_filter に次のコードを挿入することで、特定のページのビュー数を表示できますが、これは前のフィルターの後に実行する必要があります。

def count_views
  @views = Visit.where(page: request.fullpath).count
end

このクエリを頻繁に実行するため、Visit モデルを作成するときに、ページ属性にインデックスを配置することをお勧めします。

add_index :visits, :page

もちろん、同じ IP アドレスから複数の訪問者がいる可能性があるため、一意のビューは注意が必要です。メソッドの一部として Cookie を設定し、record_visitCookie が存在する場合は新しい訪問を作成しないことができます。

def record_visit
  if cookies['app-name-visited']
    return
  else
    cookies['app-name-visited'] = true
    Visit.create(page: request.fullpath, ip_address: request.ip, location: request.location.country_code)
  end
end
于 2013-03-02T12:28:00.180 に答える