设计:在没有密码的情况下更新另一个控制器上

时间:2016-04-21 09:53:13

标签: ruby-on-rails devise

如何在没有所需密码,密码确认和当前密码的情况下更新我的用户?

我正在尝试更新设备控制器外的用户,我的表单正在使用这个帮助器:

ImageView

和我的编辑表格:

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 %>

1 个答案:

答案 0 :(得分:0)

您可以编写自己的控制器,根据需要更新用户。像

这样的东西
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回答。