ユーザー認証機能を持ったSNSサービスアプリを制作しています。
いいね機能を実装しようとした際、「ActiveRecord::StatementInvalid in PostImages#show」というエラーが表示されたのですが、どの箇所が原因で、どのように解決すれば良いのか分かりません。
下記にエラー内容・エラーコード・エラーが発生したHYMLの3点を記載しておりますので、原因や解決策をご検討いただけますと幸いです。
ご教示のほど、何卒よろしくお願いいたします。
(私が記載していますコード以外に何か必要なものがありましたら、コメント欄にてご連絡いただけますとご返信させていただきます)
↓エラー画面です
Error
1ActiveRecord::StatementInvalid in PostImages#show 2Showing /home/ec2-user/environment/meshiterro2/app/views/post_images/show.html.erb where line #10 raised: 3 4SQLite3::SQLException: no such column: favorites.post_image_id: SELECT 1 AS one FROM "favorites" WHERE "favorites"."post_image_id" = ? AND "favorites"."user_id" = ? LIMIT ? 5Extracted source (around line #9): 6 7 8 def favorited_by?(user) 9 favorites.where(user_id: user.id).exists? 10 end 11 12end 13
↓モデルに記入した7行目のコードでエラーが発生しました
ErrorCode
1class PostImage < ApplicationRecord 2 belongs_to :user 3 attachment :image 4 has_many :post_comments, dependent: :destroy 5 has_many :favorites, dependent: :destroy 6 def favorited_by?(user) 7 favorites.where(user_id: user.id).exists? 8 end 9 10end
↓エラー原因の「favorite_by」メソッド(上から10行目です)を使用しているHTMLです。
HTML
1<div class="post-body"> 2 <%= attachment_image_tag @post_image, :image %> 3 <p>ショップ名:<%= @post_image.shop_name %></p> 4 <p>説明:<%= @post_image.caption %></p> 5 <p>ユーザーネーム:<%= @post_image.user.name %></p> 6 <p>投稿日時:<%= @post_image.created_at.strftime('%Y/%m/%d') %></p> 7 <% if @post_image.user == current_user %> 8 <%= link_to "削除", post_image_path(@post_image), method: :delete %> 9 <% end %> 10 <% if @post_image.favorited_by?(current_user) %> 11 <p> 12 <%= link_to post_image_favorites_path(@post_image), method: :delete do %> 13 ♥<%= @post_image.favorites.count %> いいね 14 <% end %> 15 </p> 16 <% else %> 17 <p> 18 <%= link_to post_image_favorites_path(@post_image), method: :post do %> 19 ♡<%= @post_image.favorites.count %> いいね 20 <% end %> 21 </p> 22 <% end %> 23</div> 24<div class="comments"> 25<p>コメント件数:<%= @post_image.post_comments.count %></p> 26<% @post_image.post_comments.each do |post_comment| %> 27 <p><%= image_tag('sample-author1.jpg') %></p> 28 <%= post_comment.user.name %> 29 <%= post_comment.created_at.strftime('%Y/%m/%d') %><%= post_comment.comment %> 30 <% if post_comment.user == current_user %> 31 <div class="comment-delete"> 32 <%= link_to "削除", post_image_post_comment_path(post_comment.post_image, post_comment), method: :delete %> 33 </div> 34 <% end %> 35<% end %> 36</div> 37<div class="new-comment"> 38<%= form_with(model:[@post_image, @post_comment], local: true) do |f| %> 39 <%= f.text_area :comment, rows:'5',placeholder: "コメントをここに" %> 40 <%= f.submit "送信する" %> 41<% end %> 42</div>
回答1件
あなたの回答
tips
プレビュー