deviseのカラム追加-Ruby on Rails-

Hey, guys:)
最近Deviseっていうgemを使ってログイン機能を開発中のアプリに追加させた。めっちゃ便利でやれることも盛り沢山!

しかし!!

なぜユーザーの名前を登録できるカラムがないのだ!!デフォルトで搭載されているはずじゃ…

もやもやしながらもnameを追加させたのでここで共有してみる。

バージョンはRails 5 向けです。

まずは皆さんお馴染みのmigrationから

$ bin/rails g migration AddNameToUsers name:string

それでもちろんrakeだね

$ rake db:migrate

はい、追加出来たね!

しかし!これだけでは終われない!!

新規ユーザー登録画面でユーザー名を登録できるようにする。

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

<h2>Sign up</h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <div class = "field">
    <%= f.label :name %><br />
    <%= f.text_field :name, autofocus: true %>
  </div>   #この4行だけ追加、それ以外はデフォルトで書かれてるので以下省略

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true %>
                          :
                          :

この時、デフォのコードを真似してf.name_field :nameみたいな調子乗った記述をしないように!(実体験。自らドブにハマりました..)

次のコードを追加するの忘れずに!!

ファイル;app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?  
  
  protected

  def configure_permitted_parameters
    added_attrs = [:name, :email, :password, :password_confirmation, :remember_me]
    devise_parameter_sanitizer.permit :sign_up, keys: added_attrs
    devise_parameter_sanitizer.permit :account_update, keys: added_attrs
  end
end

以上!!

Railsのバージョンが違うと最後のapplication_controller.rbに書く記述が変わってくるので注意してください。

See ya!!