deviseでログイン機能を追加する
Ruby On Railsでdeviseを扱う
deviseの導入
gem 'devise'
bundle install
rails g devise:install
ファイルを作成
# model
rails g devise user
rails db:migrate
# controller
rails g devise:controllers users
# views
rails g devise:views users
複数のログイン機能を作成する場合
必要な分だけファイルを用意する
# user用
rails g devise user
rails db:migrate
rails g devise:controllers users
rails g devise:views users
# staff用
rails g devise staff
rails db:migrate
rails g devise:controllers staffs
rails g devise:views staffs
設定ファイルを変更する
# config.scoped_views = false
# ↑コメントアウトを外してtrueにする
config.scoped_views = true
ファイルについて
app/views/users/sessions/new.html.erb: ログイン画面
app/views/users/registrations/new.html.erb: 新規登録画面
seedで管理者管理者を作成する
rails g devise adimn
rails db:migrate
rails g devise:controllers admin
rails g devise:views admin
Admin.find_or_create_by(id: 1) do |admin|
admin.email = "[email protected]"
admin.password = "foobar"
end
rails db:seeds
ログアウトする
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<%= link_to "ログアウト", destroy_medicalstaff_session_path, method: :delete %>
:authenticate_user!
deviseで使える便利なメソッド
ユーザがログインしているかどうかを確認し、ログインしていない場合はユーザをログインページにリダイレクトする。
class UsersController < ApplicationController
# befor_actionと一緒に使う
before_action :authenticate_user!
def index
@user = User.find(current_user.id)
favorites = Favorite.where(user_id: current_user.id).pluck(:institution_id)
@favorites_list = Institution.find(favorites)
end
def edit
@user = User.find(current_user.id)
end
def update
@user = User.find(current_user.id)
if @user.update(user_params)
redirect_to edit_user_path(current_user), notice: "プロフィール情報を更新しました"
else
render "edit"
end
end
private
def user_params
params.require(:user).permit(:name, :image)
end
end
日本語化
devise.ja.ymlを使う
devise.ja.ymlをconfig/localesに設置します。devise.ja.ymlはいくつか見本があるようです。
① ② ③
local/appricarion.rb
にconfig.i18n.default_locale = :ja
を記述して、日本語設定をする。
module Sample #module名はわかりやすいものを
class Application < Rails::Application
config.i18n.default_locale = :ja
end
end
gemを導入する
gem 'rails-i18n'
bundle install
参考資料
heartcombo/devise
【Rails】deviseを導入してみる
[Rails] deviseの使い方(rails6版)
Rails deviseで使えるようになるヘルパーメソッド一覧
【Rails】deviseのビューのform_forをform_withに置き換える
複数のログイン機能を作成する場合
Railsのdeviseを使って複数のユーザー別でログインする方法
deviceを使用して、adminモデルを追加する流れを分かりやすく解説
:authenticate_user!
日本語化
【Rails基礎】deviseを用いたフラッシュメッセージを表示する方法を簡単に解説
【Rails】deviseを利用したflashメッセージの表示方法
Author And Source
この問題について(deviseでログイン機能を追加する), 我々は、より多くの情報をここで見つけました https://qiita.com/tuk19/items/b3b1240429d81b4a2676著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .