我的用户有name
以及电子邮件,密码等常规设计列。我希望用户能够编辑自己的帐户设置 - 包括他们的名字 - 在/users/edit
,作为registrations
的一部分,Devise为我们提供了开箱即用的功能。用现有的Devise用户更新自定义用户属性/编辑功能
我添加输入name
到视图(这里的简化):
= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f|
= f.input :name, required: false
= f.input :email, required: true
= f.input :password, autocomplete: 'off', required: false
= f.input :password_confirmation, required: false
= f.submit 'Save'
这种形式正确呈现的名字,我可以编辑和保存,但是名字不被更新,而其他的东西。我想到Devise会采取任何形式的params
,并用这些参数更新resource
,不管它们是什么,但这似乎并不是这样。
我有它通过覆盖控制器(再次显示只有最重要的代码)工作:
class RegistrationsController < Devise::RegistrationsController
def update
resource.name = params[:user][:name]
resource.save
super
end
end
这工作不错,但有一个简单,内置的方式做到这一点,我失踪?
干杯。我最终将它添加到'application_controller'而不是初始化程序。 –
将它添加到'application_controller'将会诀窍,但同时它会让你的控制器笨拙。将它添加到单独的初始化程序中,可以轻松读取/配置,并保持控制器代码的清洁。无论如何,最后的电话是你的:) – 31piy