質問するログイン新規登録
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

984閲覧

gemのimpressionist をid以外で使うことは可能でしょうか?

pecchan

総合スコア592

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/05/27 11:08

編集2021/05/27 11:08

0

0

rails6.1.0

ページのPV数を計測するためgemのimpressionistを利用しました。
簡単にPV数を出せました。

その後、idによるアクセスを、idから別名(public_uid)に変えました。

変更前:hogehoge/item/1
変更後:hogehoge/item/ea20ga35x3

そうするとPV数が取れなくなりました。
※エラーは出ないのですが、カウントが0のまま

基本的にモデルのidで取るようですが、pubilc_uidなど他のカラムで利用できるのでしょうか?
ご存じの方居たら教えていただけると幸いです。

\app\models\item.rb

ruby

1class Item < ApplicationRecord 2 3 generate_public_uid generator: PublicUid::Generators::HexStringSecureRandom.new(12) 4 def to_param 5 public_uid 6 end 7 8 is_impressionable :counter_cache => true 9 10end

\app\controllers\items_controller.rb

ruby

1impressionist :actions=> [:show], :unique => [:impressionable_id, :user_id]

app\views\items\show.html.erb

ruby

1閲覧数:<%= @item.impressionist_count %>

試したこと

impressionistのマイグレーションスクリプト、
idをintegerからstringに変えてみました。

impressionistが使ってるimpressionsテーブルを除くとデータはちゃんと入ってますが、カウントが相変わらず取れません。

公式も見て色々試しましたが、変わらずです。

\db\migrate\20210525214321_create_impressions_table.rb

ruby

1class CreateImpressionsTable < ActiveRecord::Migration[6.1] 2 def self.up 3 create_table :impressions, :force => true do |t| 4 t.string :impressionable_type 5 t.string :impressionable_id #integerからstringへ変更 6 t.integer :user_id 7 t.string :controller_name 8 t.string :action_name 9 t.string :view_name 10 t.string :request_hash 11 t.string :ip_address 12 t.string :session_hash 13 t.text :message 14 t.text :referrer 15 t.text :params 16 t.timestamps 17 end 18 add_index :impressions, [:impressionable_type, :message, :impressionable_id], :name => "impressionable_type_message_index", :unique => false, :length => {:message => 255 } 19 add_index :impressions, [:impressionable_type, :impressionable_id, :request_hash], :name => "poly_request_index", :unique => false 20 add_index :impressions, [:impressionable_type, :impressionable_id, :ip_address], :name => "poly_ip_index", :unique => false 21 add_index :impressions, [:impressionable_type, :impressionable_id, :session_hash], :name => "poly_session_index", :unique => false 22 add_index :impressions, [:controller_name,:action_name,:request_hash], :name => "controlleraction_request_index", :unique => false 23 add_index :impressions, [:controller_name,:action_name,:ip_address], :name => "controlleraction_ip_index", :unique => false 24 add_index :impressions, [:controller_name,:action_name,:session_hash], :name => "controlleraction_session_index", :unique => false 25 add_index :impressions, [:impressionable_type, :impressionable_id, :params], :name => "poly_params_request_index", :unique => false, :length => {:params => 255 } 26 add_index :impressions, :user_id 27 end 28 29 def self.down 30 drop_table :impressions 31 end 32end 33

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自分で作ったが早いと判断し作りました。
お騒がせしました。

投稿2021/05/27 21:15

pecchan

総合スコア592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問