0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

gem "devise"の使用:def configure_permitted_parameters end(ストロングパラメータへの項目追加によるエラー解消)

Posted at

目的

gem "devise" ー ログイン機能の実装(その中の新規登録時)

備忘録の流れ

######  ①新規登録フォームで、<nickname・email・pass>の3項目を登録しようとした。 
######  ②エラーの発生 { Field 'nickname' doesn't have a default value }
######  ③gem "devise"によるストロングパラメータの初期設定。{ email・password }のみの許可。
######  ④③について、ストロングパラメータ項目の追加を行った。
######  ⑤参考サイト (qiita記事3人程)

今回のエラー原因・結果

ActiveRecord::StatementInvalid in Devise::RegistrationsController#create

Mysql2::Error: Field 'nickname' doesn't have a default value: INSERT INTO users (email,encrypted_password, created_at, updated_at)VALUES ( ~省略~ )

ニックネームのフィールドには"デフォルト値"が無いと言われました。
(localhost:3000の画面上でnicknameは入力している。)

原因は、gem "devise"上の機能が理由でした。
"devise"では、ストロングパラメータが初期設定されており
{ email・password }左記の2項目だけ許可されていました。

codeの追加

app/controllers/application_controller.rb
 before_action :configure_permitted_parameters, if: :devise_controller?

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname])
  end
参考サイトから上記の記述2項目<before_action と def configure_ ~ end> を書き加えました。
app/controllers/application_controller.rb
before_action :configure_permitted_parameters, if: :devise_controller?
まずは、application_controller.rbの上の記述からdevise_controllerのコントローラーを使用した際にbefore_actionの configure_permitted_parameters というヘルパーメソッドが行われるみたいですね。
app/controllers/application_controller.rb
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:deviseの処理名, keys: [:許可するキー])
  end
次に、説明されたメソッドについて、このままでは初期設定の<email・pass>についてのみ許可されている状態なので、付け加える必要があるようです。今回は、 permit(:sign_up, keys: [:nickname]) という形で設定しました。
こちらでエラー解消できました。無事、nicknameが登録されるようになりました。

解決のための参考サイト

@neojin@kaito121855@ohnitakahiro>3名の方、参考にさせていただきました。ありがとうございました。
  @neojin https://qiita.com/neojin/items/f03d8ebfc2e9e8a31daa
  @kaito121855 https://qiita.com/kaito121855/items/e1a80da8557258c497dc
  @ohnitakahiro https://qiita.com/ohnitakahiro/items/4487aed43fa264ddcdee

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?