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 'ログイン' %>