Ruby on rails 在一个视图中编辑Desive user,并且仅对某些字段需要密码
我正在使用Desive和Ruby on Rails,我想为编辑用户设置一个视图,在该视图中,我必须提供当前密码,如果我想有一个新密码。换句话说,如果我想更改我的姓名或生日,我可以简单地将密码字段留空,但如果我想更改密码,我希望有标准的设计行为。Ruby on rails 在一个视图中编辑Desive user,并且仅对某些字段需要密码,ruby-on-rails,forms,devise,Ruby On Rails,Forms,Devise,我正在使用Desive和Ruby on Rails,我想为编辑用户设置一个视图,在该视图中,我必须提供当前密码,如果我想有一个新密码。换句话说,如果我想更改我的姓名或生日,我可以简单地将密码字段留空,但如果我想更改密码,我希望有标准的设计行为。 我的编辑表单如下所示: 我试图通过重写update_资源方法来允许在没有密码的情况下进行更新: protected def update_resource(resource, params) resource.update_without_pa
我的编辑表单如下所示: 我试图通过重写update_资源方法来允许在没有密码的情况下进行更新:
protected
def update_resource(resource, params)
resource.update_without_password(params)
end
但是,如果不从参数require(:user).permit(…)
中删除当前密码,我将收到以下错误:
我不能从允许的参数中删除它,因为我想在密码更改时使用它
怎么做呢?我正在考虑拆分视图,创建一个新的表单用于密码编辑,以及一个用于密码编辑的控制器,但我更希望将所有内容都放在一个地方
用户的未知属性“当前密码”
该错误是有意义的,因为当前\u密码
不是设备随附用户的默认属性之一。我也遇到过类似的问题,我在attr\u accessor
在user.rb
模型中,输入attr\u访问器:当前密码
。这解决了错误,但是您需要调整如下参数以满足这两种情况
用户的未知属性“当前密码”
该错误是有意义的,因为当前\u密码
不是设备随附用户的默认属性之一。我也遇到过类似的问题,我在attr\u accessor
在user.rb
模型中,输入attr\u访问器:当前密码
。这解决了错误,但是您需要调整如下参数以满足这两种情况
我的回答解决问题了吗?是的,绝对解决!我写了一篇评论,感谢你,我想我没有点击“添加评论”---你的回答非常有帮助,直截了当:)我只做了一点升级,将“else”和“end”之间的代码替换为“super”:)很高兴听到这个消息!请随意接受我的答案:)我的答案解决问题了吗?是的,绝对!我写了一篇评论,感谢你,我想我没有点击“添加评论”---你的回答非常有帮助,直截了当:)我只做了一点升级,将“else”和“end”之间的代码替换为“super”:)很高兴听到这个消息!请随意接受我的回答:)
def update_resource(resource, params)
if params[:user][:password].blank? && params[:user][:password_confirmation].blank?
resource.update_without_password(some_params)
else
resource.update_with_password(some_params)
end
end
def some_params
params.require(:user).permit(--all params here with current_password also included--)
end