首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4: ActiveAdmin/Devise在编辑`reset_password_token`用户时填充ActiveAdmin字段?

问Rails 4: ActiveAdmin/Devise在编辑`reset_password_token`用户时填充ActiveAdmin字段?
EN

Stack Overflow用户
提问于 2013-12-27 19:03:24
回答 1查看 298关注 0票数 1

因此,我设计了一个User模型的后端运行授权。我还让ActiveAdmin与此结合运行。

下面是app/admin/user.rb:

代码语言:javascript
复制
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?或者我每次更新用户时都要随机输入一些东西.(看起来不太有效率,也不符合逻辑)。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 16:29:50

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

  • reset_password_token
  • 密码重置发送到
  • 记在
  • 当前登录位置:
  • 最后一次登入
  • 等等。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20806302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档