質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

4381閲覧

deviseの複数モデルを利用した際のstrong parametersに関して

yoshimitsu_a

総合スコア12

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/09/07 15:41

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で管理することも考えましたが構築したいアプリケーションの性質上、このような方法では対応できないため対応方法として選択肢から除外しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

deviseのバージョンがわからないので役に立つかわかりませんがもしかしたら使えるかもしれないので見てみてください。
役に立たなかったらすいません。
rails gem deviseのバージョン変更に気づかず1h以上溶かしたので、そのことをまとめてみた(undefind method'for'for)

投稿2016/09/20 13:43

neko_53

総合スコア75

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshimitsu_a

2016/09/21 01:02

ありがとうございます! 解決しました。
neko_53

2016/09/21 01:39

よかったです!頑張ってください( ´ ▽ ` )ノ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問