24
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

deviseでデフォルト以外のカラム(nameなど)を追加したいとき

Posted at

deviseを使ってログイン機能作成することはよくあるが、deviseにもともと備わっていない機能、、、例えば「名前(name)を登録したい」「電話番号(phone_number)を追加したい」など、を実現する手順。

とは言っても、「rails g devise User」の段階でUserモデルは完成しているのでまずはUserテーブルにそれぞれのカラムを追加したらいいだけ!

1, 例えば、nameカラムを追加したい時。

$rails g migration AddNameToUser name:string

で、string型のnameカラムが追加される。

しかし、カラムには追加されたものの、このままでは「strong parameter」に引っかかってデータを保存できない!

なので、(ここのstrong parameterを参考に)以下を追加。

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

***のところの意味は「sign_upするときに、nameカラムも渡しますよ」ということ。

なので、同様に、アカウント編集で編集(update)したものを反映させたければ「permit(:account_update, keys: [:name])」となる。
(より詳しい他の例はここのstrong parameterを参考に)

カラムを追加するだけでなく、strong parameterも更新し忘れないように注意!!

24
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?