🤐

【Rails】ログインしたユーザーのみ使えるようにしたい

2023/09/05に公開

いま

閲覧はログインしなくてもできるけど投稿とかコメントとかそういう機能はユーザー登録やログインしたらみれるよ!っていうのやりたい。

方法1 ボタンごと消す


そもそも上画像のようなコメント欄がなかったらコメントすることもできないわけだからこれごと消して強制的に機能が使えなくする方法

html.erb
 <% if user_signed_in? %>
     <div id="comment_form">
       <%= render 'post_comments/form', post: @post, post_comment: @post_comment %>
     </div>
 <% end %>

<% if user_signed_in? %>
<% end %>で表示させたくない部分を囲ってあげることで、サインインしていない場合はIF文でfalseが返され表示されなくなる。

方法2 コメント送信ボタンを押しても更新されないようにする。

方法1の場合だとコメント機能があることさえ気づいてもらえないこともあり得るので、入力フォームは表示するけど更新をされないようにする方法。

before_action :authenticate_user!, only: [:create]

コメントのコントローラーの一番上に上の記述を行うことで、create動作を行う前にユーザーがログインしているかどうかを判断し、ログインしていない場合はcreateが動作しないようになっている。
この場合だと、コメント投稿ボタンを押してもなにも反応しない状況が作れる。

Discussion