ログイン機能と新規登録機能をdeviseで導入していざ、新規登録を行おうとしたら以下のようなエラーが表示されます。ActiveRecord::NotNullViolation in Devise::RegistrationsController#create
おそらくusernameというカラムがdefaultで存在しないために起きているエラーだと思われるのですが、これはどのファイルをどのように修正すればよいでしょうか?
ログイン時のview
.log .login %h2.login-header aaaaa = form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| .field -# = f.label :ユーザ名 %br/ = f.email_field :email, autofocus: true, autocomplete: "email",placeholder: "メールアドレス" .field -# = f.label :password %br/ = f.password_field :password, autocomplete: "current-password",placeholder: "パスワード" - if devise_mapping.rememberable? .field = f.check_box :remember_me = f.label :remember_me .actions = f.submit "ログイン" = render "devise/shared/links"
新規登録時のview
.newreg .newregstr %h2.sign-up Kstagram %h5 新しいアカウント作成 = form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| = render "devise/shared/error_messages", resource: resource .field -# = f.label :email %br/ = f.email_field :email, autofocus: true, autocomplete: "email",placeholder: "メールアドレス" .field -# = f.label :password - if @minimum_password_length %em (#{@minimum_password_length} characters minimum) %br/ = f.password_field :password, autocomplete: "new-password",placeholder: "パスワード" .field -# = f.label :password_confirmation %br/ = f.password_field :password_confirmation, autocomplete: "new-password",placeholder: "パスワード確認" .actions = f.submit "Sign up" = render "devise/shared/links"
マイグレーションファイル
# frozen_string_literal: true class DeviseCreateUsers < ActiveRecord::Migration[5.2] def change create_table :users do |t| ## Database authenticatable # t.string :username, null: false t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" t.text :profile ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable # t.integer :sign_in_count, default: 0, null: false # t.datetime :current_sign_in_at # t.datetime :last_sign_in_at # t.string :current_sign_in_ip # t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.timestamps null: false end # add_index :users, :username, unique: true add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end
モデル
class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable # validates :username, presence: true #追記 # validates :profile, length: { maximum: 200 } #追記 end