私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

rails4でdeviseを使う場合にパラメータを追加したいとき

devise用のユーザテーブルに列を追加し、その値を画面から受け取りたい場合がある。そんな場合はviewに追加してApplicationControllerに以下のように書けばいいんだけど、それがうまくいかない。

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end

こういうエラーが発生してしまう。

undefined method `<<' for {}:ActionController::Parameters


そんな時に役立つのいつもstackoverflow先生。

http://stackoverflow.com/questions/18287290/customizing-devise-with-strong-parameters

昔のrcの書き方みたいね。
結局、こう書けばいいみたい。でも、追加じゃなくて、再定義だよね・・・。もっといい書き方があると思うんだけどなー。

def configure_permitted_parameters
  devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:username, :email) }
end