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!

devise使用しユーザー登録機能実装時にDBに保存されない

解決したいこと

deviseを使用しユーザー登録機能の練習をしているが、
登録しようとした内容がDBへ登録されないです。。。
解決方法を教えて下さい。

該当するソースコード

controllers/applicationcontroller

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

  private

  def basic_auth
    authenticate_or_request_with_http_basic do |username, password|
      username == ENV["BASIC_AUTH_USER"] && password == ENV["BASIC_AUTH_PASSWORD"]
    end
  end

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:nickname, :last_name, :first_name, :last_name_kana, :first_name_kana, :birth_date])
  end
end
models/user.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable

  validates :nickname, presence: true
  validates :last_name, presence: true
  validates :first_name, presence: true
  validates :last_name_kana, presence: true
  validates :first_name_kana, presence: true
  validates :birth_date, presence: true

  has_many :items
  has_many :order_histories
end
views/devise/registrations/new.html.erb

<%= form_with model: @user, url: user_registration_path, class: 'registration-main', local: true do |f| %>
<div class='form-wrap'>
  <div class='form-header'>
    <h1 class='form-header-text'>
      会員情報入力
    </h1>
  </div>

  <% render 'shared/error_messages', model: f.object %>

  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">ニックネーム</label>
      <span class="indispensable">必須</span>
    </div>
    <%= f.text_area :nickname, class:"input-default", id:"nickname", placeholder:"例) furima太郎", maxlength:"40" %>
  </div>
  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">メールアドレス</label>
      <span class="indispensable">必須</span>
    </div>
    <%= f.email_field :email, class:"input-default", id:"email", placeholder:"PC・携帯どちらでも可", autofocus: true %>
  </div>
  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">パスワード</label>
      <span class="indispensable">必須</span>
    </div>
    <%= f.password_field :encrypted_password, class:"input-default", id:"encrypted_password", placeholder:"6文字以上の半角英数字" %>
    <p class='info-text'>※英字と数字の両方を含めて設定してください</p>
  </div>
  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">パスワード(確認)</label>
      <span class="indispensable">必須</span>
    </div>
    <%= f.password_field :password_confirmation, class:"input-default", id:"password-confirmation", placeholder:"同じパスワードを入力して下さい" %>
  </div>
  <div class="form-group">
    <p class='form-info-header'>
      本人確認
    </p>
    <p class='form-info-text'>
      安心・安全にご利用いただくために、お客さまの本人情報の登録にご協力ください。他のお客さまに公開されることはありません。
    </p>
  </div>
  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">お名前(全角)</label>
      <span class="indispensable">必須</span>
    </div>
    <div class='input-name-wrap'>
      <%= f.text_area :last_name, class:"input-name", id:"last-name", placeholder:"例) 山田" %>
      <%= f.text_area :first_name, class:"input-name", id:"first-name", placeholder:"例) 陸太郎" %>
    </div>
  </div>
  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">お名前カナ(全角)</label>
      <span class="indispensable">必須</span>
    </div>
    <div class='input-name-wrap'>
      <%= f.text_area :last_name_kana, class:"input-name", id:"last-name-kana", placeholder:"例) ヤマダ" %>
      <%= f.text_area :first_name_kana, class:"input-name", id:"first-name-kana", placeholder:"例) リクタロウ" %>
    </div>
  </div>
  <div class="form-group">
    <div class='form-text-wrap'>
      <label class="form-text">生年月日</label>
      <span class="indispensable">必須</span>
    </div>
    <div class='input-birth-wrap'>
      <%= raw sprintf(
                  f.date_select(
                    :birth_date,
                    class:'select-birth',
                    id:"birth-date",
                    use_month_numbers: true,
                    prompt:'--',
                    start_year: 1930,
                    end_year: (Time.now.year - 5),
                    date_separator: '%s'),
                  "<p> 年 </p>", "<p> 月 </p>") + "<p> 日 </p>" %>
    </div>
    <p class='info-text'> 本人情報は正しく入力してください。会員登録後、修正するにはお時間を頂く場合があります。</p>
  </div>
  <div class="form-group">
    <h2 class='form-bottom-text'>
      「会員登録」のボタンを押すことにより、
      <span>利用規約</span>
      <br>に同意したものとみなします
    </h2>
  </div>
  <div class='register-btn'>
    <%= f.submit "会員登録" ,class:"register-red-btn" %>
  </div>
  <p class='register-info'>本人情報の登録について</p>
</div>
<% end %>

自分で試したこと

マイグレート実施済み、
devise_parameter_sanitizerの記述確認
他ネットで調べて確認しましたがうまく動作せずです。。
よろしくお願いいたします。

0 likes

No Answers yet.

Your answer might help someone💌