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
以下略 new_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(メールアドレス、パスワードのバリデーションつまり適切検証)
ひとまずこれで下準備は完了です!
この後やることは
- サインアップ、サインイン画面の作成
- サインインしている場合とそうでない場合でのビューの場合分け
が主になります!
フロント作業が中心ですがまだサーバーもいじります
では続きも参考に!