我正在制作一个 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 的范围。我错过了什么?
您需要一个
email
字段才能让 Devise 识别这一点。事实上,我很惊讶你没有收到关于没有 email
属性的错误。