Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Spree/Rails用户密码重置_Ruby On Rails_Ruby On Rails 3_Devise_Spree - Fatal编程技术网

Ruby on rails Spree/Rails用户密码重置

Ruby on rails Spree/Rails用户密码重置,ruby-on-rails,ruby-on-rails-3,devise,spree,Ruby On Rails,Ruby On Rails 3,Devise,Spree,我正在尝试从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..........

我正在尝试从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\u password更新密码!('spree123','spree123')
但无法登录

轨道3.2.12 Spree 1.3.2

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


谢谢。

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

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

谢谢你的回答。不幸的是,甚至将实例分配给局部变量也没有帮助。我必须使用rake spree_auth:admin:create创建一个新的管理员,并使用web管理员界面进行更改。
Spree::User.first.update_attributes(password: 'password')