🐣

[Ruby on Rails] 閲覧数をカウントし、表示

2023/07/09に公開

テーブルの作成

  • ViewCount テーブル
カラム名 データ型 カラムの説明
user_id integer 投稿を見たユーザーのid
book_id integer 投稿のid

モデルの作成

$ rails g model ViewCount user_id:integer book_id:integer
$ rails db:migrate

モデルの関連付け

user.rb
has_many :view_counts, dependent: :destroy
book.rb
has_many :view_counts, dependent: :destroy
view_count.rb
belongs_to :user
belongs_to :book

コントローラーの追記

book_controller
  def show
    @book = Book.find(params[:id])
    view_count = ViewCount.new(book_id: @book.id, user_id: current_user.id)
    view_count.save
  end
プチ解説
  • 2行目を1行で書くとこうなります
    current_user.view_counts.create(book_id: @book.id) 
  • create を使用すると、 .save をしなくても保存されるようになります

View ページの追加

部分テンプレートを使用しています

books/show.html.erb
閲覧数: <%= @book.view_counts.count %>

これにて完成です

こちらの記事参考にさせて頂きました

Discussion