🐣
[Ruby on Rails] 閲覧数をカウントし、表示
テーブルの作成
- 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