ゲストユーザーを編集させない
はじめに
編集ボタンを隠すやり方もあるが、"編集画面を作っている"と、ポートフォリオを見る人へ伝えたかったので、編集ボタンを表示させて、それを押したら→リダイレクト→「ゲストユーザーは編集できません」のメッセージを表示。というやり方で実装しました。
前提:
ゲストユーザーのpathは'users/2'とする。編集は、'users/2/edit'。
email: smooth_login@example.com
もし、user/showにあるユーザー画面で、プロフィール編集ボタンを押してきた場合
router
ゲストログインを、smooth_loginと表していたため、smoothとルートを定義しました。
get '/smooth' => 'users#smooth', as: 'smooth_edit'
controller
def smooth flash[:danger] = "簡単ログインしたユーザーは編集できません。" redirect_to request.referrer || 'users/2' end
view(作らなくてもmethod: :getでいけるかも。。)
smooth.erb.html
#空
もし、'users/2/edit'と直接リンクを打たれた場合
user/edit.html
<% if @user.email == "smooth_login@example.com" %> <p>ゲストユーザーは編集できません</p> <%= link_to :back do %> <button>戻る</button> <% end %> <% else %> ##ここに通常の編集コード <% end %>
最後に
もっといいやり方があるかもしれません。