devise導入したときのカラムの増やし方


悩み事

devise導入したらデフィルトでemailとpasswordしか入ってないじゃん、、、、
usersテーブルにnameやaddressカラムとかも追加したいのにどうすればいいかわからない!!

ってこと一度はありますよね。

今回はそのお悩み解決いたします!!

1.usersテーブルにカラムを追加

今回はnameカラムを追加してみようと思うので、
以下のようにターミナルでコマンドを実行しましょう。

$ rails g migration AddNameToUsers name:string

$ rails db:migrate

2.application_controller.rbを編集

application_controller.rbを以下のように編集しましょう。
これでユーザー登録時にnameカラムが保存されるようになります。

app/controllers/application_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: [:name])
  end
end

今の状態でuser情報を登録するとnameカラムも追加されてるしいい感じだ!!
と安堵するのはまだ早いのです。。。

今のままでは登録時にしかnameカラムが入っていないので、編集でnameを変更しても変更されません。
不完全な状態です。

3.完全感覚dreamer

じゃあ編集時に追加したカラムの編集もしっかりとできるようにしましょう!
とはいえとても簡単です。

app/controllers/application_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: [:name])
    <!-- 以下のように編集時の対応する記述も追加してあげましょう -->
    devise_parameter_sanitizer.permit(:account_update, keys: [:name])
  end
end

これでバッチリです!!
以上!