kad
@kad (Yuta)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

新規登録ボタンを押しても登録出来ず、トップページに移動できない。

解決したいこと

新規登録しようとすると、新規登録出来ずに、コンソールにて以下のエラーが出てしまう。
新規登録したら、トップページに遷移したい。

Image from Gyazo

見えにくい為、こちらでも。

Started POST "/users" for ::1 at 2022-04-20 21:36:53 +0900
Processing by Devise::RegistrationsController#create as HTML
  Parameters: {"authenticity_token"=>"GaVR/3Ye5YsvK0GJr81sgOz6h4572bpw1yK488VVCOFwh60pKL9S+kiC2tB7B/zaOFb/86JJfT52j5es/tZBOQ==", "user"=>{"email"=>"hooge@huga", "encrypted_password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "name"=>"fuga", "profile"=>"aaaaaa", "occupation"=>"bbbbbb", "position"=>"cccccc"}, "commit"=>"新規登録"}
Unpermitted parameter: :encrypted_password
   (4.1ms)  BEGIN
  User Exists? (1.8ms)  SELECT 1 AS one FROM `users` WHERE `users`.`email` = BINARY 'hooge@huga' LIMIT 1
   (0.6ms)  ROLLBACK
  Rendering devise/registrations/new.html.erb within layouts/application
  Rendered devise/registrations/new.html.erb within layouts/application (Duration: 13.2ms | Allocations: 765)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 47ms (Views: 32.2ms | ActiveRecord: 6.4ms | Allocations: 13760)

写真付きで情報交換できるアプリを作ってます。
画像下部の新規登録ボタンを押すと、画面が変わらない為コンソールを確認した所、上記添付したエラーが発覚しました。

Image from Gyazo

こちらが原因と推測してます。

Unpermitted parameter: :encrypted_password

関係していると思われる、現状のコードです。

class ApplicationController < ActionController::Base
  
  before_action :configure_permitted_parameters, if: :devise_controller?

  private
def configure_permitted_parameters  
  
  devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :profile, :occupation, :position])
end
end
app/views/devise/registrations

<div class="main">
  <div class="inner">
    <div class="form__wrapper">
      <h2 class="page-heading">ユーザー新規登録</h2>

        
        <%= form_with model: @user, url: user_registration_path, local: true do |f| %>

        <div class="field">
          <%= f.label :email, "メールアドレス" %><br />
          <%= f.email_field :email, id:"user_email", autofocus: true, autocomplete: "email" %>
        </div>

        <div class="field">
          <%= f.label :encrypted_password, "パスワード(6文字以上)" %><br />
          <%= f.password_field :encrypted_password, id:"user_password", autocomplete: "new-password" %>
        </div>

        <div class="field">
          <%= f.label :password_confirmation, "パスワード再入力" %><br />
          <%= f.password_field :password_confirmation, id:"user_password_confirmation", autocomplete: "new-password"  %>
        </div>

        <div class="field">
          <%= f.label :name, "ユーザー名" %><br />
          <%= f.text_field :name, id:"user_name" %>
        </div>

        <div class="field">
          <%= f.label :profile, "プロフィール" %><br />
          <%= f.text_area :profile, class: :form__text, id:"user_profile" %>
        </div>

        <div class="field">
          <%= f.label :occupation, "所属" %><br />
          <%= f.text_area :occupation, class: :form__text, id:"user_occupation" %>
        </div>

        <div class="field">
          <%= f.label :position, "役職" %><br />
          <%= f.text_area :position, class: :form__text, id:"user_position" %>
        </div>

        <div class="actions">
          <%= f.submit "新規登録",  class: :form__btn %>
        </div>
      <% end %>
    </div>
  </div>
</div>

マイグレーションファイル

class DeviseCreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      t.string :name               
      t.text   :profile            
      t.text   :occupation        
      t.text   :position           

他にも不足資料ありましたら教えて下さい。

考察
Unpermitted parameter: :encrypted_password
から、encrypted_passwordが許可されたない事が原因と思われる。
しかし、デバイスはデフォルトでパスワードを許可する認識の為、このエラーの理由が分かりません。
データベースに、encrypted_passwordのカラムは存在します。

解決策がある方は教えて頂きたいです。

0

1Answer

gemのDeviseを使用したことがない者の回答で大変恐縮ですが。

コントローラ側で記述している、ストロングパラメータの
configure_permitted_parameters メソッドで
encrypted_passwordを含めていないからではないですか?

1Like

Comments

  1. @kad

    Questioner

    encrypted_password,を含めた所、解消されました!
    ありがとうございます!!

Your answer might help someone💌