[ruby on rails]deviseで新規登録ができない
解決したいこと
ruby on railsのdeviseを用いて、ログイン機能を作っています。
新規登録した際にエラーは出ないのですが、なぜかデータベースに保存されません。
初期状態で新規登録の確認を行ったときは正常に作動しました。
おそらく
・nameカラムを追加した
・deviseのviewファイルを編集した
ことによりデータベースへ保存されなくなったと思われるのですが、解決方法がわかりません。
当方初心者ですので、見当違いな質問をしてしまっていれば申し訳ありません。
どなたかご教授お願いしますm(_ _)m
新規登録画面のview
<div class="main container">
<div class="card devise-card">
<div class="form-wrap">
<div class="form-group text-center">
<h2 class="logo-img mx-auto"></h2>
<p class="text-secondary">新しい仲間とつながろう</p>
</div>
<%= form_with scope: resource, as: resource_name, url: registration_path(resource_name), local: true do |f| %>
<div class="form-group">
<%= f.email_field :email, autofocus: true, placeholder: "メールアドレス", class: "form-control" %>
</div>
<div class="form-group">
<%= f.text_field :name, autofocus: true, placeholder: "フルネーム", class: "form-control" %>
</div>
<div class="form-group">
<%= f.password_field :password, autocomplete: "off", placeholder: "パスワード", class: "form-control" %>
</div>
<div class="form-group">
<%= f.password_field :password_confirmation, autocomplete: "off", placeholder: "パスワードの確認", class: "form-control" %>
</div>
<div class="actions">
<%= f.submit "登録する", class: "btn btn-primary w-100" %>
</div>
<% end %>
<br>
<p class="devise-link">
アカウントをお持ちですか?
<%= link_to "ログイン", new_user_session_path %>
</p>
</div>
</div>
</div>
カラムを追加するためのマイグレーションファイル
class AddNameToUser < ActiveRecord::Migration[6.1]
def change
add_column :users, :name, :string, null: false
end
end
ストロングパラメータの設定
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
devise_parameter_sanitizer.permit(:account_update, keys: [:name])
end
end
Userモデルのバリデーション設定
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
validates :name, presence: true, length: { maximum: 50 }
end
自分で試したこと
以下のことを行い、送信する値をemailとpasswordのみにしてみましたがうまくいきません。
・viewファイルからemailとpassword以外のフォームを除く
・nameカラムの追加をやめる
・ストロングパラメータの設定をやめる
・バリデーションをはずす
補足
それぞれのバージョンは以下のとおりです。
ruby
2.6.8p205
rails
6.1.4.1
bootstrap
4.5.3
{
"name": "colabo",
"private": true,
"dependencies": {
"@rails/actioncable": "^6.0.0",
"@rails/activestorage": "^6.0.0",
"@rails/ujs": "^6.0.0",
"@rails/webpacker": "5.4.2",
"bootstrap": "4.5.3",
"jquery": "^3.6.0",
"popper.js": "^1.16.1",
"turbolinks": "^5.2.0",
"webpack": "^4.46.0",
"webpack-cli": "^3.3.12"
},
"version": "0.1.0",
"devDependencies": {
"webpack-dev-server": "^4.2.0"
}
}