gpt4 book ai didi

ruby-on-rails - Spree/Rails 用户密码重置

转载 作者:行者123 更新时间:2023-12-05 01:11:53 24 4
gpt4 key购买 nike

我正在尝试从 Rails 控制台设置用户(管理员)密码:

bundle exec rails console
> Spree::User.first.email
=> "admin@mysite.com"
> Spree::User.first.encrypted_password
Spree::User Load (1.1ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "4ec556............................................."
> Spree::User.first.password='spree123'
Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "spree123"
> Spree::User.first.password_confirmation='spree123'
Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "spree123"
> Spree::User.first.save!
Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1
(0.3ms) BEGIN
(1.3ms) SELECT COUNT(DISTINCT "spree_users"."id") FROM "spree_users" LEFT OUTER JOIN "spree_roles_users" ON "spree_roles_users"."user_id" = "spree_users"."id" LEFT OUTER JOIN "spree_roles" ON "spree_roles"."id" = "spree_roles_users"."role_id" WHERE "spree_roles"."name" = 'admin'
(0.3ms) COMMIT
=> true
> Spree::User.first.encrypted_password
Spree::User Load (1.0ms) SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "1bc15d.............................................."

到目前为止一切顺利。看起来用户的新密码已更改并提交到数据库。但是,当我稍后尝试使用 Web 客户端登录并使用新密码时,它会失败并显示无效的身份/密码消息。我什至尝试使用 Spree::User.first.reset_password!('spree123', 'spree123') 更新密码,但仍然无法登录。

rails 3.2.12 spree 1.3.2

知道我做错了什么吗?如何正确设置新密码?

谢谢。

最佳答案

问题是每次您执行 Spree::User.first 时,它都会从数据库中重新加载记录。这意味着您在记录的一个实例上设置值,重新加载它,然后保存没有实际更改的重新加载的模型。一个简单的解决方法是创建一个包含记录的本地实例变量并更新它:

user = Spree::User.first
user.password='spree123'
user.password_confirmation='spree123'
user.save!

关于ruby-on-rails - Spree/Rails 用户密码重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14968254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com