【发布时间】:2013-12-24 11:10:42
【问题描述】:
所以我对Active 模型的后端运行授权进行了设计(您可以将 Actives 视为用户)。我还让 ActiveAdmin 与它一起运行。
这里是app/admin/active.rb:
ActiveAdmin.register Active do
# Specify which columns we want to appear in our ActiveAdmin index page
index do
column :name
column :email
column :class
column :major
# Adds view/edit/delete actions
default_actions
end
controller do
def permitted_params
params.permit!
end
end
end
问题是:假设我用 100 个 Actives 填充我的数据库。然后我进入 ActiveAdmin 尝试编辑 Active,并且有一堆字段,包括名为 Reset password token 的内容。问题是,Reset password token(由 Devise)有一个唯一性约束,因为我需要在其字段中为我编辑的每个 Active 输入不同的内容。例如,如果我在编辑第一个 Active 时将其留空,则更新将通过。如果我在编辑第二个 Active 时将字段留空再次,我会收到以下错误:
SQLite3::ConstraintException: column reset_password_token is not unique: UPDATE "actives" SET "encrypted_password" = ?, "reset_password_token" = ?, "current_sign_in_ip" = ?, "last_sign_in_ip" = ?, "major" = ?, "class" = ?, "biography" = ?, "updated_at" = ? WHERE "actives"."id" = 95
我的问题:处理这个问题的最佳方法是什么?据我所知(不多),如果用户忘记了密码并且需要将其发送给他们,则使用Reset password token,那么如果管理员需要更新用户,他们应该在此字段中输入什么?在这种情况下最好的解决办法是什么?
谢谢。
【问题讨论】:
-
为什么要更改重置密码令牌?如果可以的话,我建议甚至不要让管理员能够更改该字段,因为系统会处理它。不要从您的视图中发送重置密码令牌字段,以便管理员无法更改它。
-
我该怎么做呢?我只是从视图中删除该字段吗?这不只是提交每个
update请求并带有空白Reset password token吗? -
不,只删除表单字段栏不会更改该字段,它会保持原样。
-
您是在使用 Devise 为管理员创建的文件来编辑活动,还是在视图中使用自己编写的代码?您可以添加您用于管理员编辑活动的视图吗?
-
我正在使用 Devise 为管理员创建的文件来编辑活动;我如何访问它并从 ActiveAdmin 编辑视图中删除
Reset password token?
标签: ruby-on-rails devise activeadmin