繁体   English   中英

Rails 4:ActiveAdmin / Devise —在ActiveAdmin中编辑用户时填写“ reset_password_token”字段吗?

[英]Rails 4: ActiveAdmin/Devise — filling in `reset_password_token` field when editing user in ActiveAdmin?

因此,我对User模型的后端运行授权进行了设计。 我也有与此同时运行的ActiveAdmin。

这是app / admin / user.rb:

ActiveAdmin.register User do

  # Specify which columns we want to appear in our ActiveAdmin index page
  index do
    column :name
    column :email
    column :class
    column :major
    column :biography

    # Adds view/edit/delete actions
    default_actions
  end

  controller do
    def permitted_params
      params.permit!
    end
  end
end

这是问题所在:用户注册后,其reset_password_token属性为空。 假设有5位用户注册。 然后,我进入ActiveAdmin门户,并尝试编辑用户的信息。 好的,所以我编辑第一个用户的名字。 编辑页面如下所示:

在此处输入图片说明

例如,我填写major属性,因为这就是我要更新的所有内容。 用户保存成功。

然后,虽然仍在ActiveAdmin门户中,但我还是要编辑第二个用户,也要编辑其major属性。 但是,当我点击Update User ,出现错误,说:

QLite3::ConstraintException: column reset_password_token is not unique: UPDATE "actives" SET "encrypted_password" = ?, "reset_password_token" = ?, "major" = ?, "pledge_class" = ?, "biography" = ?, "current_sign_in_at" = ?, "last_sign_in_at" = ?, "updated_at" = ? WHERE "actives"."id" = 49

我假设发生此错误仅仅是因为已经有一个用户带有空白的reset_password_token. (如果我在reset_password_token字段中随机输入内容,则更新成功完成)。

正常的解决方法是什么? 是否以某种方式初始化reset_password_token? 还是我每次更新用户时都只需要随机输入一些内容...(似乎不是非常有效或合乎逻辑)。

谢谢!

字段reset_password_token不应是表单的一部分。 当用户请求重设密码时,它是Devise使用的内部字段。 隐藏大多数Devise内部字段最好:

  • reset_password_token
  • 密码重置发送至
  • 记得创建于
  • 当前登录于
  • 上次登录时间:
  • 等等...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM