ユーザー管理機能を実装する。 | Ruby on Rails
- Gemfile に
$ gem 'devise'
を追記して、$ bundle install
する。
Devise の設定ファイルを作成し、 User モデルを作成する。
-
$ rails g devise:install
を実行して、Devise の設定ファイルを作成する。 -
$ rails g devise user
を実行して、Devise の機能を持つ User モデルを作成する。- この時に、ルーティングに
devise_for :users
という Devise の機能へリクエストするためのルーティングが生成される。
- この時に、ルーティングに
-
$ rails db:migrate
を実行して、Devise の機能を持つ User モデルをマイグレートする。 - ログイン画面等の Devise が持つビューファイルを変更したい場合は、
$ rails g devise:views
を実行してビューファイルを作成する。
メールアドレスとパスワード以外の値を受け取れるようにする。
- Devise では、メールアドレスとパスワードしか値を受け取らないようにストロングパラメータが記述されているので、任意でフォームを追加した場合には、その値を受け取れるように記述する必要がある。
_controller.rb
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:追加したフォームの名前])
end
end
ログインしている時としていない時で表示が変わるようにする。
- Devise をインストールすると、ユーザーがサインインしているかどうかを判断する
user_signed_in?
メソッドが使用できる。
<% if user_signed_in? %>
<!-- ユーザーがサインインしている場合に実行する処理を記述する。 -->
<% else %>
<!-- ユーザーがサインアウトしている場合に実行する処理を記述する。 -->
<% end %>
送信したフォームの情報にサインインしているユーザーの情報を追加したい場合…
_controller.rb
class PostsController < ApplicationController
private
def post_params
params.require(:post).permit(:title, :content).merge(user_id: current_user.id)
# form_with を使用して送信される情報を取得するストロングパラメータに .merge メソッドを使用して、current_user (現在ログインしているユーザー) の ID を結合させる。
end
end
Author And Source
この問題について(ユーザー管理機能を実装する。 | Ruby on Rails), 我々は、より多くの情報をここで見つけました https://qiita.com/Hirano_Tech/items/645b4b21ca5865ffa7a5著者帰属:元の著者の情報は、元の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 .