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も更新し忘れないように注意!!