作成してから時間が立ってだいぶ忘れてきているのですぐに思い出せるように残しておきます。
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 %>
ログインしていてゲストユーザでないときにリンクが表示されるようにすることで編集や削除を回避します。