a big fish in a small pond

ロードバイク、rails 、料理、写真、ガシェットでお送りします。

そろそろ開発19 deviseでsign_in時にユーザ名を登録させる方法

1.困ったこと
deviseは本当に便利なgemなんですが、default時のemail,passwordだけではなく、ユーザ名(user_name)を登録したい、と思うことがある。いや、諸兄も思ったことがあるはず。

どれくらい、困っているかというと、素人が花火を撮ろうとすると、このように下手くそな写真しか取れない。これくらい困っている。

2.本来は別Contorollerをすべきだが...裏の手
app/controllers/application_controller.rb
before_filter :configure_permitted_parameters, if: :devise_controller?
protected

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation,:user_name) }
end
・before_filterでconfigure時に許可するパラメータを指定するmethodを呼ぶことにする。
・method内では、sign_up時に、defaultの:email, :password, :password_confirmationに加えて:user_nameも許可するという指定にする、user_nameはDBのカラム名と合わせる。

そのように指定すると、deviseのcontrollerをオーバーライドした新たなcontrollerを準備しなくとも、ユーザ登録時にユーザ名の登録が可能になる。

ようやく出来た。
次はユーザ登録時の承認メールの日本語化を行う予定