かずきの日記

エンジニア・起業・人生の日記

Ruby on Rails 超初心者向け 初めてのユーザーログイン機能作成 その①サーバー作業

どうもかずきです!

 

今更感ですが何だかんだアプリ作成で作りがちな一番最初に試したい機能ということで今回はRuby on Rails 超初心者向け 初めてのログイン機能作成 参考用という内容で行ってみようと思います

 「フリー写真 ウェブサイト」の画像検索結果

 

 

gem 'devise'の導入 

 

Gemfileの最後尾に以下を記述

Gemfile


gem 'devise'

 

railsアプリケーションをすでに作成している上での段階から説明しますが、rails newをする時にバージョン指定を行わないと不具合が生じることがあります 

bundle installをする

以下の順番で実行します

 

ターミナル


$ bundle install

$ rails s

ショートカットキー control + c を押す

$ rails g devise:install

 

bundle install をするときは、作成しているアプリのディレクトリにいるか確認してから実行して下さい 

 ついでにrails sでローカルサーバーを再起動します

その後control + cで再度終了させてからrails g devise:install

  • config/initializers/devise.rb
  • config/locales/devise.en.yml

のファイルを自動生成できます

 

Userモデルの作成

rails g devise userを実行

 

ターミナル


$ rails g devise user

 これにより、

  • app/models/user.rb
  • db/migrate/20??XXXXXXXXXX_devise_create_users.rb
  • test/fixtures/users.yml
  • test/models/user_test.rb

 

のモデルファイルとマイグレーションファイル、テストファイルが自動生成されます

 

以下のファイルの自動追記がされているか確認

 

config/routes.rb


Rails.application.routes.draw do

# 以下の一行が追記されているか確認 devise_for :users 
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'hoge#index' # 以下略 end

 devise_for :users自動追記されていれば成功です

rails routes でユーザー系のルートが生成されているか確認

ターミナル


$ rails routes

以下略 n
ew_user_session GET /users/sign_in(.:format) devise/sessions#new user_session POST /users/sign_in(.:format) devise/sessions#create destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit user_password PATCH /users/password(.:format) devise/passwords#update PUT /users/password(.:format) devise/passwords#update POST /users/password(.:format) devise/passwords#create cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users/edit(.:format) devise/registrations#edit user_registration PATCH /users(.:format) devise/registrations#update PUT /users(.:format) devise/registrations#update DELETE /users(.:format) devise/registrations#destroy POST /users(.:format) devise/registrations#create
以下略

 すごく便利

 rails db:migrateを実行

ターミナル


$ rails db:migrate

 これでusersテーブルが作成されます

 userモデルのファイルの記述を確認

app/models/user.rb


class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

 devise以下の記述の意味も理解しておくために簡潔にまとめました

  • detabase_authenticatable(DB保存時にパスワードの暗号化)
  • regiasterable(新規登録つまりサインアップ)
  • recoverable(パスワードリセット)
  • rememverable(ログイン情報保持)
  • validatable(メールアドレス、パスワードのバリデーションつまり適切検証)

 

ひとまずこれで下準備は完了です!

この後やることは

 

  • サインアップ、サインイン画面の作成
  • サインインしている場合とそうでない場合でのビューの場合分け

 

が主になります!

 

フロント作業が中心ですがまだサーバーもいじります

では続きも参考に!