一、引入gem 'impressionist'并安装相关的东西
1、安装gem,分别在rails 6的版本使用gem 'impressionist',在rails 5 和更低的版本使用gem 'impressionist', '~>1.6.1'
#rails 6
gem 'impressionist'
#rails 5 or lower
gem 'impressionist', '~>1.6.1'
然后执行 bundle install
2、引用gem 'impressionist'自带的一些数据栏位
rails g impressionist
rake db:migrate
会有一些自带的数据栏位出现
t.string "impressionable_type" # model type: Widget
t.integer "impressionable_id" # model instance ID: @widget.id
t.integer "user_id" # automatically logs @current_user.id
t.string "controller_name" # logs the controller name
t.string "action_name" # logs the action_name
t.string "view_name" # TODO: log individual views (as well as partials and nested partials)
t.string "request_hash" # unique ID per request, in case you want to log multiple impressions and group them
t.string "session_hash" # logs the rails session
t.string "ip_address" # request.remote_ip
t.text "params" # request.params, except action name, controller name and resource id
t.string "referrer" # request.referer
t.string "message" # custom message you can add
t.datetime "created_at" # I am not sure what this is.... Any clue?
t.datetime "updated_at" # never seen this one before either.... Your guess is as good as mine?? ;-)
二、如何应用到自己的专案
假设所应用的模块叫 Widgets
1、在相应的 controller controllers/widgets_controller.rb 的顶部加上 impressionist
WidgetsController < ApplicationController
impressionist
end
或者使 impressionist 只适用于单个或多个页面
WidgetsController < ApplicationController
impressionist :actions=>[:show,:index]
end
2、 在相应的 model widget.rb里加上 is_impressionable
class Widget < ActiveRecord::Base
is_impressionable
end
3、在你想要显示访问数量的页面加上下面这个指令,
例如在index页面views/widgets/index.html.erb添加下面这个指令,
@widget.impressionist_count
如果此时你对【二、1】上面设置了 impressionist :actions=>[:show] 的show页面进行了点击或刷新,这时候index页面就会显示出相应的点击量(以数字integer的形式显示),默认显示方式为
@widget.impressionist_count(:filter=>:all)
即每点击一次就添加一次点击量(显示所有点击量),
也可以设置为
@widget.impressionist_count(:filter=>:session_hash)
即针对相同的ip地址,点击一次以后,无论再多少次都只增加一次点击量,只有两个ip地址点击才能增加两次点击量,如此类推。
当然还有更多的显示方法,以及更深入的使用方式可以参照gem原文,这里只提供一个最简单的显示点击数量使用方法,谢谢各位。