Geocoder gem を Gemfile に追加し、 bundle install
.
との属性を持つVisit
モデルを作成します。page
ip_address
location
問題のページについては、関連するコントローラーに 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_visit
Cookie が存在する場合は新しい訪問を作成しないことができます。
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