设计:在没有密码的其他控制器上更新用户

问题描述:

如何在没有所需密码,密码确认和当前密码的情况下更新我的用户?设计:在没有密码的其他控制器上更新用户

我想外面更新用户设计的控制器,我的状态正在与这个助手:

module ContentHelper 
    def resource_name 
    :user 
    end 

    def resource 
    @resource ||= User.new 
    end 

    def devise_mapping 
    @devise_mapping ||= Devise.mappings[:user] 
    end 
end 

和我的表单编辑:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put, multipart: true }) do |f| %> 
<%= devise_error_messages! %> 


    <%= f.file_field :personal_file, placeholder: "Upload file" %> 

    <%= f.submit %> 

    <% end %> 

有了这个它的出现,我不能将我的密码留空并重定向到用户编辑页面:

Password is too short (minimum is 8 characters) 
Password can't be blank 
Current password can't be blank 

您可以写下你自己的控制器,根据你的意愿更新用户。像

class UserController < ApplicationController 
    before_filter :authenticate_user! 
    def update 
    current_user.update(user_params) 
    end 

    private 

    def user_params 
    params.require(:user).permit(:personal_file) 
    end 
end 

会做的伎俩。你不需要把current_user想象成一些魔法设计的东西,而是把它用作你拥有的任何其他模型。

如果你无论如何希望使用Devise控制器来做到这一点,你应该看到this的答案。

+0

好的谢谢!我已经做到了 – terrorista