ユーザー登録時に入力してもらう値を追加する方法

※メールアドレスとパスワードについてはdeviseの導入時にデフォルトで実装されているものとする

※今回はユーザー名を追加で登録するものとする

 

1)マイグレーションファイルの修正

・【ターミナル】rails db:rollback を実行

・【VScode

-----db/migrate/2023xxxxxx~_users.rbファイル内-----

 t.string :username

--------------------------------------------------------------

 を追記

・【ターミナル】rails db:migrate を実行

 

2)新規登録画面の編集

・【VScode

-----app/views/devise/registrations/new.html.erbファイル内-----

<div class = "field">

  <%= f.label :"ユーザー名" %><br />

  <%= f.text_field :username %>

</div>

---------------------------------------------------

 

3)バリデーションの設定(必要に応じて)

・バリデーションとは指定したカラムが空だとエラーにする設定

・【VScode

-----app/controllers/application_controller.rbファイル内-----

validates :username, presence:true

------------------------------------------------

を追記

 

4)コントローラーの修正

・deviseがデフォルトで持っている値以外のデータを保存するときに必要

・【VScode

------------app/controllers/application_controller.rbファイル内------------

before_action :configure_permitted_parameters, if: :devise_controller?

 

private

def configure_permitted_parameters

  devise_parameter_sanitizer.permit(:sign_up, keys:[:username])

end

-----------------------------------------------------------

を追記

 

5)ログインしているユーザー名を表示させる

・【VScode

-----app/views/~/index.html.erbファイル内-----

<%= "#{current_user :username}さん"%> 

// ログインしているユーザー名を表示

--------------------------------------