
・ Rubis: 2.5.7 Rails: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Système d'exploitation: macOS Catalina
Ce qui suit a été mis en œuvre.
** * Attention à bien préciser la version! (Une erreur s'est produite si non spécifié) **
Gemfile
gem 'impressionist', '~>1.6.1'
Terminal
$ bundle
Terminal
$ rails g impressionist
Terminal
$ rails db:migrate
schema.rb
create_table "impressions", force: :cascade do |t|
  t.string "impressionable_type"
  t.integer "impressionable_id"
  t.integer "user_id"
  t.string "controller_name"
  t.string "action_name"
  t.string "view_name"
  t.string "request_hash"
  t.string "ip_address"
  t.string "session_hash"
  t.text "message"
  t.text "referrer"
  t.text "params"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["controller_name", "action_name", "ip_address"], name: "controlleraction_ip_index"
  t.index ["controller_name", "action_name", "request_hash"], name: "controlleraction_request_index"
  t.index ["controller_name", "action_name", "session_hash"], name: "controlleraction_session_index"
  t.index ["impressionable_type", "impressionable_id", "ip_address"], name: "poly_ip_index"
  t.index ["impressionable_type", "impressionable_id", "params"], name: "poly_params_request_index"
  t.index ["impressionable_type", "impressionable_id", "request_hash"], name: "poly_request_index"
  t.index ["impressionable_type", "impressionable_id", "session_hash"], name: "poly_session_index"
  t.index ["impressionable_type", "message", "impressionable_id"], name: "impressionable_type_message_index"
  t.index ["user_id"], name: "index_impressions_on_user_id"
end
Terminal
$ rails g migration AddImpressionsCountToUsers impressions_count:integer
~_add_impressions_count_to_users.rb
class AddImpressionsCountToUsers < ActiveRecord::Migration[5.2]
  def change
    # 「default:"0" ajouté
    add_column :users, :impressions_count, :integer, default: 0
  end
end
Terminal
$ rails db:migrate
user.rb
#Postscript
is_impressionable counter_cache: true
is_impressionable
➡︎ Autorisez ʻimpressionist` à être utilisé dans le modèle User.
** * Veuillez vous assurer d'ajouter counter_cache: true. ** **
users_controller.rb
def index
  @users = User.order(impressions_count: 'DESC') #Ajout de la fonction de tri
end
def show
  @user = User.find(params[:id])
  impressionist(@user, nil, unique: [:session_hash]) #Postscript
end
User.order(impressions_count: 'DESC')
➡︎ Triez la liste des utilisateurs par ordre décroissant du nombre de PV.
impressionist(@user, nil, unique: [:session_hash])
➡︎ Lorsque vous accédez à la page des détails de l'utilisateur, le nombre de PV augmente de un.
[Lors de la mesure par adresse IP]
impressionist(@tourist_spot, nil, unique: [:impressionable_id, :ip_address])
** * Le nombre de PV ne peut être compté qu'une seule fois par utilisateur afin que le nombre de PV ne puisse pas être augmenté volontairement. ** **
slim:users/index.html.slim
table.table
  thead
    tr
      th
        |Classement
      th
        |Nom complet
      th
        |Nombre de PV
  tbody
    - @users.each.with_index(1) do |user, index|
      tr
        td
          = index
          |Rang
        td
          = link_to user do
            = user.name
        td
          /Afficher le nombre de PV
          = user.impressions_count
        Recommended Posts