【发布时间】:2013-12-23 08:11:31
【问题描述】:
所以我在这里完成了 Rails 教程:
http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
并试图让 ActiveAdmin 能够删除用户。通过教程,我的用户模型 has_secure_password 并且还有一个 remember_token 属性。因此,当我进入我的 ActiveAdmin 用户页面并尝试编辑用户时,要填写的字段是:用户名、电子邮件、密码摘要、记住令牌。
例如,当我修改名称字段并尝试提交编辑请求时,我得到一个ActiveModel::ForbiddenAttributesError。当我尝试创建用户时也会发生这种情况。我认为这显然与我的身份验证/密码设置有关,但是对于 Rails 来说还很新,我不确定从哪里开始寻找。有什么想法吗?
编辑:我尝试将此添加到我的 app/admin/user.rb 文件中:
controller do
def resource_params
return [] if request.get?
[ params.require(:active).permit(:name, :email, :password_digest, :remember_token) ]
end
end
我的堆栈跟踪中的这个错误消失了:
Unpermitted parameters: utf8, _method, authenticity_token, commit, id
现在,当我在 ActiveAdmin 中点击 update 时,我不再收到 ForbiddenAttributesError。相反,页面重新加载,但未提交更改,我在终端中收到此消息:
Started PATCH "/admin/users/59" for ...
...
...
(0.1ms) begin transaction
User Exists (0.5ms) SELECT 1 AS one FROM "users" WHERE (LOWER("users"."email") = LOWER('example-58@railstutorial.org') AND "users"."id" != 59) LIMIT 1
(0.2ms) rollback transaction
这是我的 users_controller.rb:
def update
@active = Active.find(params[:id])
if @active.update_attributes(active_params)
flash[:success] = "Profile updated"
redirect_to @active
else
render 'edit'
end
end
private
def active_params
return [] if request.get?
[ params.require(:active).permit(:name, :email, :password_digest, :remember_token) ]
end
【问题讨论】: