ポートフォリオ作成で得たテクニック1(備忘録)

作成してから時間が立ってだいぶ忘れてきているのですぐに思い出せるように残しておきます。

1:かんたん登録

かんたん登録とは?

ワンクリックでSign-upとLoginができるユーザーフレンドリーな機能

準備

users/index.html.erbに以下の記述を追加

<%= link_to "簡単ログイン", easy_login_path, method: :get, class: 'btn slide-bg' %>

routes.rbに以下の記述を追加

get "easy_login" => "users#easy_login"

easy_loginにgetというhttpメソッドが来た時usersコントローラーのeasy_loginアクションを呼ぶように設定

users_controller.rbに以下の記述を追加

def easy_login
  user = User.find_or_create_by(email: 'guest@example.com')
  user.name = "GuestUser"
  user.password = SecureRandom.urlsafe_base64
  user.save if !user.id
  session[:user_id] = user.id
  redirect_to root_path
  flash[:notice] = "ゲストユーザーとしてログインしました"
end

find_or_create_byは検索条件に合致するデータが存在した場合はそれを使い、存在しない場合は新規作成する便利なメソッド

user.save if !user.idの部分は

idがない場合、DBに保存してIDを生成するために必要になります。

編集や削除をしてほしくない時

sessions_helper.rbに以下の記述を追加

def guest_user
  current_user == User.find_by(email: 'guest@example.com')
end

ヘッダーやフッターなどに編集や削除のリンクが有るところに追加

<% if logged_in? && !guest_user %>
  <li><%= link_to "退会する", @user, method: :delete,
    data: { confirm: "本当に退会しますか?" } %>
  </li>
<% end %>

ログインしていてゲストユーザでないときにリンクが表示されるようにすることで編集や削除を回避します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です