rails初心者です。
実装したいこと
deviseを利用して複数モデルでstrong parametersを追加したいです。
現状
deviseを利用してuserとadminの複数モデルの作成はできました。
デフォルトではemail,passwordしかパラメーターの設定がされていないのでnicknameなどのパラメーターを追加しようと考えております。
通常であればapplication_controller.rbに
ruby
1 before_action :configure_permitted_parameters, if: :devise_controller? 2 3 def configure_permitted_parameters 4 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname]) 5 end 6
を追加すればパラメーターの取得ができるのだと思うのですが複数モデルの場合は独自のサニタイザーを設定することで実装可能というのを調べましたがエラーが出て解決しません。。。。
状況として
1、ib以下にuserというディレクトリを作成。
2、lib/userのディレクトリ以下にparameter_sanitizer.rbを作成。
3、parameter_sanitizer.rbの記述は以下
ruby
1class User::ParameterSanitizer < Devise::ParameterSanitizer 2 def sign_in 3 default_params.permit(:nickname, :email) 4 end 5end 6
4、application_controller.rbの記述
ruby
1class ApplicationController < ActionController::Base 2 protected 3 4 def devise_parameter_sanitizer 5 if resource_class == User 6 User::ParameterSanitizer.new(User, :user, params) 7 else 8 super # Use the default one 9 end 10 end 11end 12
上記でviewのフォームにnicknameに入力してsubmitすると
NameError in Devise::RegistrationsController#create
と出てきてapplication_controller.rbの
User::ParameterSanitizer.new(User, :user, params)
の部分が赤くなってエラーになります。。。。
どのようにすればうまくいきますでしょうか?
ご教授お願いいたします。
ちなみにdeviseはuser一つにしてしまってadminというカラムを追加して
0,1で管理することも考えましたが構築したいアプリケーションの性質上、このような方法では対応できないため対応方法として選択肢から除外しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/21 01:02
2016/09/21 01:39