Rails

2015-07-03, rails

Deviseのユーザモデルにカスタムフィールドを追加

データベースをmigrateしたら終わりかと思ったら更新フォームの動作でハマります。

まずは、コントローラの生成をします。

$ devise:controllers users -c=registrations

生成時にもメッセージがでますが、ルートも明記してあげます。

config/routes.rb
  devise_for :users, controllers: {
    registrations: "users/registrations"
  }

生成されたコントローラに以下のようにbefore_filterを定義したらOKです。

app/controllers/users/registrations_controller.rb
  before_filter :configure_account_update_params, only: [:update]

  def configure_account_update_params
    devise_parameter_sanitizer.for(:account_update) << :name
  end

configure_.. メソッドの手前に「 You can put the params you want to permit in the empty array.」って書いてあるから、このメソッドだけ宣言(オーバライド)したらいけるのかな、と思い込んでしまったところが落とし穴でした。メソッド名は何でも良いので、before_filterに登録するところが大事です!

参考URL

この記事は役に立ちましたか?