前提・実現したいこと
お世話になっております。
現在私は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つでは改善が見込めませんでした。
現状、それ以外の仮説を模索している段階です。
考えられる仮説や実装のヒントになりそうなを教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。