【Rails】deviseで現在ログインしているユーザー情報の取得方法


はじめに

deviseでは「現在ログインしているユーザーの情報を取得」する事ができます。
例えば、「名前」「生年月日」「住所」「電話番号」など、対象のユーザーが既に登録した情報を表示する方法を紹介します。

目次

1.current_userメソッド
2.遷移先のview

開発環境

ruby 2.6.5
rails 6.0.0
devise 4.7.3

前提

devise導入済み
model生成済み
ユーザー登録済みでデータを既に持ってる
view作成済み

実装

それでは実装して行きます。

1.current_userメソッド

deviseを導入しているため使用できるメソッドで、current_user(現在ログインしているユーザー)の情報が取得できます。

index.html.erb
<%= link_to current_user.nickname, edit_user_registration_path(current_user), class: "user-name" %>
          #↑ここ#                           #↑ここ#

例えば、マイページでユーザー情報を編集したい時を想定します。link_toメソッドでcurrent_user.nameと記述すると、今ログインしてるユーザーのnameカラムに保存されてる名前が表示れます。
また、url指定したpathの後ろにcurrent_userをつける事で、遷移先にもそのユーザー情報を表示させる事ができます。

※注意:urlはreils routesでコントローラー#アクションを探しください。

2.遷移先のview

遷移先のviewページでは、既に登録されてるユーザーの情報を表示させます。

edit.html.erb
<%= form_with model: @user, url: edit_addresses_path,  class: 'registration-main', local: true, method: :get do |f| %>

<%= f.text_area :name, class:"input-default", id:"name", placeholder:"例) 太郎", maxlength:"40" %>

<% end %>

今回ユーザー情報を編集するページを作りたいのでapp> views> devise >registrationsにあるedit.html.erbのファイルを編集します。
form_withメソッドを使います。
devise内部で@userが定義されていて、既にデータが代入されてるので「model: @user」とします。
「do |f|」とする事で「end」までの「f.text_area :カラム名(今回はname)」に現在のユーザー情報が表示されます。

※注意:deviseのviewをよび出してる場合は既に生成さてるファイルを使うと便利です。
参考記事
https://qiita.com/AKI3/items/bf0d5b57029abfc8154c

まとめ

以上、現在ログインしているユーザー情報の取得方法でした。
current_userメソッドを使う事がポイントです。

最後に

私はプログラミング初学者ですが、同じ様に悩んでる方々の助けになればと思い、記事を投稿しております。
それでは、また次回お会いしましょう〜