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!!