LoginSignup
0
0

More than 5 years have passed since last update.

Railsにsessionを実装するまで

Last updated at Posted at 2018-11-19

Railsにsessionを実装するまで

sessionコントローラを作成する
rails g controller sessions
routesを定義する
Rails.application.routes.draw do
  resources :sessions, only: [:new, :create, :destroy]
  resources :users
end
ログインフォームのビューを作成する
<h1>Log in</h1>
<%= form_with(scope: :session, url: sessions_path, local: true) do |f| %>

  <%= f.label :email %>
  <%= f.email_field :email %>

  <%= f.label :password %>
  <%= f.password_field :password %>

  <%= f.submit "Log in" %>
<% end %>
ユーザーIDを保存するメソッドを作成する
class SessionsController < ApplicationController
  def create
    user = User.find_by(email: params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      # ログイン成功した場合
    else
      flash.now[:danger] = 'ログインに失敗しました'
      render 'new'
    end
  end
end
全コントローラ上でsessionのモジュールを使用できるようする
class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  include SessionsHelper
end
ログアウトの実装(セッションの削除)
class SessionsController < ApplicationController
~(省略)~
  def destroy
    session.delete(:user_id)
  end
end
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0