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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1271閲覧

複数のdeviseのストロングパラメーター設定によるエラー解決方法

rachel

総合スコア0

Devise

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/03/08 14:36

前提・実現したいこと

ruby  '2.6.5'
rails  '6.0.0’
mysql2 '0.5.3'
上記の環境でアプリケーションを作っています。
2つのdevise(main_userとshop_user)を作成し、ユーザー管理機能を実装しています。
状況としては、2つのdeviseを作成し、各コントローラー毎にストロングパラメーターを設定後、ユーザーの新規登録を行い、エラーが発生。
エラー内容は以下記載の通りと考えております。
・送られてきた値がストロングパラメーターを通過出来ていない。
・nicknameの設定がnull: falseであるのに対しての値が空である。

原因は以下記載の通りと考えております。
・ストロングパラメーターの設定ミス
・viewの記載ミス
・カラム名の命名ミス

エラーや原因について調べましたが、原因が分からず詰まっています。
添付しているコードはmain_userのみとなっております。
初めての投稿となり、情報が足りないこともあると思いますので、追加で必要な情報が御座いましたら何なりとお申し付け下さい。

※複数のdeviseのストロングパラメーター以下の記事を参考に行いました。
https://qiita.com/kinpin/items/21b1badcfe19aca84038

発生している問題・エラーメッセージ

ブラウザ ActiveRecord::NotNullViolation in Devise::RegistrationsController#create Mysql2::Error: Field 'nickname' doesn't have a default value 画像URL:https://gyazo.com/28466335924eb5c213b3a4b187d89c2f コンソール Unpermitted parameters: :nickname, :last_name, :first_name, :last_name_kana, :first_name_kana, :gender, :birthday(1i), :birthday(2i), :birthday(3i), :phone_number, :profile 中略 ActiveRecord::NotNullViolation (Mysql2::Error: Field 'nickname' doesn't have a default value) 画像URL:https://gyazo.com/c93d84db9d9b34ee3c5d55376d729a8b

該当のソースコード

controllers/main_users/registrations_controller.rb

ruby

1class MainUsers::RegistrationsController < Devise::RegistrationsController 2 before_action :configure_sign_up_params, only: [:create] 3中略 4 def configure_sign_up_params 5 devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :last_name, 6 :first_name, :last_name_kana, :first_name_kana, :birthday, :gender, :phone_number, 7 :profile]) 8 end 9中略 10end

views/main_users/registrations/new.html.erb

ruby

1<div class="singup-box"> 2 <h1>一般ユーザー新規登録</h1> 3 <div class="singup-box-inner"> 4 <%= form_with model: @main_user, url: main_user_registration_path, local: true do |f| %> 5 <%= render "main_users/shared/error_messages", resource: resource %> 6 <%# ユーザー名入力欄 %> 7 <div class="singup-box-nickname"> 8 <label>ユーザー名</label> 9 <span class="indispensable">必須</span><br /> 10 <%= f.text_field :nickname, autofocus: true, placeholder:"例) test太郎", maxlength:"40" %> 11 </div> 12 <%# メールアドレス入力欄 %> 13 <div class="singup-box-email"> 14 <label>メールアドレス</label> 15 <span class="indispensable">必須</span><br /> 16 <%= f.email_field :email, placeholder:"PC・携帯どちらでも可" %> 17 </div> 18 <%# パスワード入力欄 %> 19 <div class="singup-box-password"> 20 <label>パスワード</label> 21 <span class="indispensable">必須</span><br /> 22 <%= f.password_field :password, placeholder:"6文字以上の半角英数字" %> 23 <p>※英字と数字の両方を含めて設定してください</p> 24 </div> 25 <%# パスワード(確認用)入力欄 %> 26 <div class="singup-box-password"> 27 <label>パスワード(確認)</label> 28 <span class="indispensable">必須</span><br /> 29 <%= f.password_field :password_confirmation, placeholder:"同じパスワードを入力して下さい" %> 30 </div> 31 <%# 本名入力欄 %> 32 <div class="singup-box-name"> 33 <label>お名前(全角)</label> 34 <span class="indispensable">必須</span><br /> 35 <%= f.text_field :last_name, placeholder:"例) 山田" %> 36 <%= f.text_field :first_name, placeholder:"例) 太郎" %> 37 </div> 38 <%# 本名入力欄(カナ) %> 39 <div class="singup-box-namekana"> 40 <label>お名前(カナ)</label> 41 <span class="indispensable">必須</span><br /> 42 <%= f.text_field :last_name_kana, placeholder:"例) ヤマダ" %> 43 <%= f.text_field :first_name_kana, placeholder:"例) タロウ" %> 44 </div> 45 <%# 性別選択 %> 46 <div class="singup-box-gender"> 47 <p>性別</p> 48 <label><%= f.radio_button :gender, "男性" %>男性</label> 49 <label><%= f.radio_button :gender, "女性" %>女性</label> 50 </div> 51 <%# 生年月日入力欄 %> 52 <div class="singup-box-birthday"> 53 <div> 54 <label>>生年月日</label> 55 <span class="indispensable">必須</span><br /> 56 </div> 57 <div class="birthday-select"> 58 <%= raw sprintf( 59 f.date_select( 60 :birthday, 61 use_month_numbers: true, 62 prompt:'--', 63 start_year: 1930, 64 end_year: (Time.now.year - 5), 65 date_separator: '%s'), 66 "<p> 年 </p>", "<p> 月 </p>") + "<p> 日 </p>" %> 67 </div> 68 </div> 69 <%# 電話番号入力欄 %> 70 <div class="singup-box-phonenumber"> 71 <label>電話番号</label> 72 <span class="indispensable">必須</span><br /> 73 <%= f.text_field :phone_number, placeholder:"例)09012345678", maxlength:"11"%> 74 </div> 75 <%# プロフィール入力欄 %> 76 <div class="singup-box-profile"> 77 <label>プロフィール</label> 78 <span class="indispensable">任意</span><br /> 79 <%= f.text_area :profile, maxlength:"300"%> 80 </div> 81 <%# 新規登録ボタン %> 82 <div class="actions"> 83 <%= f.submit "新規登録" %> 84 </div> 85 <% end %> 86 </div> 87</div>

migrate/main_user.rb

ruby

1class DeviseCreateMainUsers < ActiveRecord::Migration[6.0] 2 def change 3 create_table :main_users do |t| 4 ## Database authenticatable 5 t.string :nickname, null: false 6 t.string :last_name, null: false 7 t.string :first_name, null: false 8 t.string :last_name_kana, null: false 9 t.string :first_name_kana, null: false 10 t.date :birthday, null: false 11 t.string :gender, null: false 12 t.string :phone_number, null: false 13 t.text :profile 14 t.string :email, null: false, default: "" 15 t.string :encrypted_password, null: false, default: "" 16 17 ## Recoverable 18 t.string :reset_password_token 19 t.datetime :reset_password_sent_at 20 21 ## Rememberable 22 t.datetime :remember_created_at 23 24 ## Trackable 25 # t.integer :sign_in_count, default: 0, null: false 26 # t.datetime :current_sign_in_at 27 # t.datetime :last_sign_in_at 28 # t.string :current_sign_in_ip 29 # t.string :last_sign_in_ip 30 31 ## Confirmable 32 # t.string :confirmation_token 33 # t.datetime :confirmed_at 34 # t.datetime :confirmation_sent_at 35 # t.string :unconfirmed_email # Only if using reconfirmable 36 37 ## Lockable 38 # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts 39 # t.string :unlock_token # Only if unlock strategy is :email or :both 40 # t.datetime :locked_at 41 42 43 t.timestamps null: false 44 end 45 46 add_index :main_users, :email, unique: true 47 add_index :main_users, :reset_password_token, unique: true 48 # add_index :main_users, :confirmation_token, unique: true 49 # add_index :main_users, :unlock_token, unique: true 50 end 51end 52

試したこと

shop_userでも新規登録を行って見ましたが、同様のエラーが発生しました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問