使用 Rails 7/devise 为用户播种

问题描述 投票:0回答:1

我正在制作一个 Rails 7/React 应用程序(一个基本的 POS 系统),其中使用 devise-api 和 devise-security gem 进行身份验证和会话限制。在阅读了具有类似问题的其他线程并尝试了他们的解决方案后,我仍然不确定如何进一步进行。

# models/user.rb

class User < ApplicationRecord
  has_many :checks, dependent: :destroy
  validates :password, presence: true, uniqueness: true
  validates :first_name, presence: true
  validates :last_name, presence: true
  devise :database_authenticatable, :registerable, :api,
         :recoverable, :rememberable, :validatable, :session_limitable
end
# db/migrate/devise_create_users.rb

class DeviseCreateUsers < ActiveRecord::Migration[7.0]
  def change
    create_table :users do |t|
      t.string :first_name, null: false, default: ""
      t.string :last_name, null: false, default: ""
      t.string :encrypted_password, null: false, default: ""
      t.boolean :admin, null: false, default: false
      t.string :unique_session_id
      t.timestamps null: false
  end
end

# db/seeds.rb
users = User.create!(
    [
        {
            first_name: "John",
            last_name: "Smith",
            password: "1111",
            password_confirmation: "1111",
            admin: true
        },
        {
            first_name: "Samuel",
            last_name: "Amity",
            password: "4000",
            password_confirmation: "4000",
            admin: false
        }
    ]
)

尝试为数据库播种时出现以下错误:

rails aborted!
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: users.password
/home/samity/Development/code/phase-5/burghers/burghers_pos/db/seeds.rb:6:in `<main>'

Caused by:
SQLite3::SQLException: no such column: users.password

我确切地知道错误是什么,但根据我阅读的其他文档,设计库应该接受用户的密码和密码确认属性并生成加密密码属性。我还将initializers/devise.rb 中的密码长度编辑为4..4 的范围。我错过了什么?

ruby-on-rails devise
1个回答
0
投票

您需要一个

email
字段才能让 Devise 识别这一点。事实上,我很惊讶你没有收到关于没有
email
属性的错误。

© www.soinside.com 2019 - 2024. All rights reserved.