akira1110
4/17/2019 - 10:20 AM

ログイン機能実装

gemファイルを利用しないログイン機能の実装

*** 参考 *** https://qiita.com/tmzkysk/items/12c3392dff6da1c87fdf

# コンソールからカラムを確認する
> rails c
> User.column_names

# モデルにカラムを追加する
> rails generate migration クラス名 カラム名:データ型( カラム名:データ型)
> rails generate migration Add[Xxx]To[Yyy] price:integer author:string
Xxx: 追加するカラム名(任意の文字列)
Yyy: 対象のテーブル名
db/migrateにファイルが追加されている
# Gemfileに変更が必要(has_secure_passwordを利用するため)
# gem 'bcrypt', '~> 3.1.11'

class User < ActiveRecord::Base
  has_secure_password validations: true

  validates :mail, presence: true, uniqueness: true
end
# フォームの入力画面を作る
<div id="register_form">
		<%= form_for Student.new do |f| %>
		  <%= f.text_field :name, placeholder: 'お名前(必須)' %><br/>
		  <%= f.text_field :email, placeholder: 'メールアドレス(必須)' %><br/>
		  <%= f.text_field :password, placeholder: 'パスワード(必須)' %><br />
		  <%= f.text_field :password_confirmation, placeholder: 'パスワード確認(必須)'<bt />

		  <%= f.submit '会員登録する', class: 'submit' %>
		<% end %>
	</div>
class UsersController < ApplicationController
  # ユーザ情報登録画面
  def new
    @user = User.new
  end
  
  # ユーザの情報が送られてきたら、データベースに保存
  def create
    @user = User.new(user_params)
    if @user.save
      redirect_to login_path
    else
      render 'new'
    end
  end

  private
    # 検証用
    def user_params
      params.require(:user).permit(:name, :mail, :password, :password_confirmation)
    end

end
> rails g controller Sessions new

# route ルーティングの設定を行う
# ログイン / ログアウト
get 'login', to: 'sessions#new'
post 'login', to: 'sessions#create'
delete 'logout', to: 'sessions#destroy'
<!-- sessions/new.html.erb -->
<%= form_for :session, url: login_path do|f| %>
<%= f.text_field :email %>
<%= f.password_field :password %>
<%= f.submit 'ログイン' %>