🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Sequel Pro

Sequel Proは、Mac OS X向けMySQLフロントエンドです。GUIからのMySQLの操作・管理が可能になります。強力なクエリ編集、多彩なエンコーディングオプションのサポートなど多くの機能を備えています。

Ruby on Rails 6

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Q&A

解決済

1回答

1252閲覧

投稿のいいね数をカウントしたい

Pro01x19

総合スコア17

Sequel Pro

Sequel Proは、Mac OS X向けMySQLフロントエンドです。GUIからのMySQLの操作・管理が可能になります。強力なクエリ編集、多彩なエンコーディングオプションのサポートなど多くの機能を備えています。

Ruby on Rails 6

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

0グッド

0クリップ

投稿2020/12/23 14:45

編集2020/12/23 15:04

前提・実現したいこと

お世話になっております。
現在私はSNSのようなアプリを作成中です。
1週間ほど前に非同期でいいねを付けたり消したり出来、いいね数が変動する機能を実装しました。
しばらく経ちその他の機能を実装し終わりリファクタリングをしました。

そして動作確認をしていると画面上のいいね数は変動し
Sequel ProのLIkesテーブルにもしっかりと残っているのですが、
PostsテーブルにはLikes_countが0の状態でした

ユーザーの詳細ページにいいねした投稿を表示させたいため、この課題を解決したいです。
特にエラーメッセージなどもなく、リファクタリング中にはいいね機能に関わる部分を触った覚えがなく
仮説が立てにくく困っています。

該当のソースコード

routes.rb resources :posts do resources :comments, only: :create resources :likes, only: [:create, :destroy] collection do get 'search' end end
like.rb class Like < ApplicationRecord belongs_to :post belongs_to :user end
post.rb has_many :likes, dependent: :destroy def liked_by?(current_user) likes.where(user_id: current_user.id).exists? end
user.rb has_many :likes, dependent: :destroy has_many :like_posts, through: :likes, source: :post
Likes_controller class LikesController < ApplicationController def create @post = Post.find(params[:post_id]) like = current_user.likes.build(post_id: params[:post_id]) like.save end def destroy @post = Post.find(params[:post_id]) like = Like.find_by(post_id: params[:post_id], user_id: current_user.id) like.destroy end end
_like.html.erb <% if user_signed_in? %> <% if post.like_user(current_user.id) %> <p><span>お気に入り解除: <i class="fas fa-star"><%=link_to post.likes.count, post_likes_path(post.id), method: :delete, remote: true %></i></span> </p> <% else %> <p><span>お気に入り登録: <i class="far fa-star"><%=link_to post.likes.count, post_likes_path(post.id), method: :post, remote: true %></i></span> </p> <% end %> <% else %> <i class="far fa-star"></i> <p><span>お気に入り数: </span><%= post.likes.count %></p> <% end %>
create.js.erb / destroy.js.erb $('#likes_buttons_<%= @post.id %>').html("<%= j(render partial: 'likes/like', locals: {post: @post}) %>");

試したこと

command + Z で戻っては機能の確認をするなどをしました。
リファクタリングで誤って削除してしまった記述があるかと思ったためです。
Gitでも確認し、慣例性のある記述がなかったことを確認しました。

マイグレーションファイルに異常があるのではないかと思い
rails db:resetをしました。

上記の2つでは改善が見込めませんでした。

現状、それ以外の仮説を模索している段階です。
考えられる仮説や実装のヒントになりそうなを教えていただけると幸いです。

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

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

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

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

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

guest

回答1

0

自己解決

class Like < ApplicationRecord
belongs_to :post, counter_cache: :likes_count

こちらの記述が抜け落ちていました。

お騒がせいたしました。

投稿2020/12/23 15:14

Pro01x19

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問