Closed yuumasakura777 closed 5 years ago
エラーが出て困っています。
具体的にどんなエラーが出ているんでしょうか?
ネットで検索しながらしましたがどれもエラーが出ました。
何を試したのか記載お願いしたいです:bow:
基本的には権限機能を実装する際に以下の実装要件が含まれると思うのでそこを実現していく必要があります。
自分ならArticle(記事)とかのモデルにauthor?のようなメソッドを生やして投稿者かどうか判定するようにします。
class Article
def author?(user)
user_id == user.id
end
end
controllerではそのメソッドを使って判定するのが良いかなと:bow:
@yuumasakura777
仰る通りのことをしたら解決できました。 ありがとうございました。
概要
現在掲示板サイトを作っており、ログインして投稿した者だけが編集、削除できる機能を実装しようと試みているのですが、エラーが出て困っています。 どのようにすれば、投稿者だけが編集、削除できる機能を実装できるか教えてください。
実現したいこと
投稿者だけが編集、削除できる機能を実装したい。 viewで条件分岐して編集、削除ボタンを投稿者以外には見えなくする方法か、編集、削除ボタンを押したときに、投稿者以外が、権限がありませんと元のホーム画面に戻るなどどちらの機能でも大丈夫です。
困っていること
困っていることがバグの場合は事象やログ、エラーメッセージをできるだけそのまま(抜粋などしない)下記に記載してください。
index.html.erb
<% @posts.each do |post| %>
<%= post.id %> ユーザー : <%= post.user.name %> <%= post.created_at %> <%= link_to '編集',edit_post_path(post), class: 'btn btn-primary' %> <%= link_to '削除',post_path(post), method: :delete, data: { confirm: 'この投稿を削除します。よろしいですか?'}, class: 'btn btn-danger' %>
< % end %>
上記の link toの上でif による条件分岐をしました。
posts_ controller.rb
def edit @post=current_user.posts.find(params[:id]) end
def update @post=current_user.posts.find(params[:id])
end
def destroy @post=current_user.posts.find(params[:id])
end
application_controller.rb
helper_method :current_user
private
def current_user @current_user =User.find_by(id: session[:user_id]) if session[:user_id] end
解決するために行ったこと
ネットで検索しながらしましたがどれもエラーが出ました。
問題となっている箇所の予想
問題となっているアプリケーションのGitHub URL