いつもお世話になっています。
Railsでいいね機能を実装したのですが、いいねの部分でN+1問題が解決できないので、質問致します。
現在は
- Userモデル
- Tweetモデル
- Likeモデル
の3つのモデルを作っており、User→Tweet→Likeのように関連付けをしています。
そして、tweets_controller.rbは以下の様に書いています。
//tweets_controller.rb def index @tweets = Tweet.all.includes(:user) end
そして、tweets/index内に以下の記述をしていて、
<% @tweets.each do |tweet| %> 省略 <%= render partial:'likes/like',locals:{tweet:tweet} %> <% end %>
likes/_like.html.erb内には、以下の様に書いています。
<% if user_signed_in? %> <% if tweet.likes.find_by(user_id:current_user.id) %> //この行がN+1問題の原因? <%= button_to [like, tweet.likes.find_by(user_id:current_user.id)], method: :delete do %> いいね済 <% end %> <% else %> <%= button_to tweet_likes_path(tweet) do %> いいね <% end %> <% end %> <% else %> ログインするといいねができます。 <% end %>
ログを見ると、おそらく2行目の「<% if tweet.likes.find_by(user_id:current_user.id) %>」がN+1問題を引き起こしていると思うのですが、何か解決策はあるのでしょうか?
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。