新規登録ボタンを押しても登録出来ず、トップページに移動できない。
Q&A
解決したいこと
新規登録しようとすると、新規登録出来ずに、コンソールにて以下のエラーが出てしまう。
新規登録したら、トップページに遷移したい。
見えにくい為、こちらでも。
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)
写真付きで情報交換できるアプリを作ってます。
画像下部の新規登録ボタンを押すと、画面が変わらない為コンソールを確認した所、上記添付したエラーが発覚しました。
こちらが原因と推測してます。
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