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