【问题标题】:Allow users to edit their account without providing a password | Rails4允许用户在不提供密码的情况下编辑他们的帐户 | Rails4
【发布时间】:2013-09-01 08:46:07
【问题描述】:

在 Rails 3 中它工作得很好,但在我的新 Rails4 Appp 中,我不知道是什么问题。

Devise GitHub Page 上的指南

我的注册控制器

def update
    # required for settings form to submit when password is left blank
    if params[:user][:password].blank?
        params[:user].delete("password")
        params[:user].delete("password_confirmation")
    end

    @user = User.find(current_user.id)
    if @user.update_without_password(devise_parameter_sanitizer.sanitize(:account_update))
        set_flash_message :notice, :updated
        # Sign in the user bypassing validation in case his password changed
        sign_in @user, :bypass => true
        redirect_to after_update_path_for(@user)
    else
        render "edit"
    end
end

我的应用程序控制器

def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
        u.permit(:name, :first_name, :user_name, :email, :password, :password_confirmation, :provider, :uid)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
        u.permit(:name, :email, :password, :password_confirmation, :first_name, :last_name,
                         :user_name, :avatar, :profile_cover, :facebook_link,
                         :twitter_link, :instagram_link, :status)
    end
end

我将控制器添加到我的 Routes

:registrations => "registrations"

我使用以下适当的方法更改了更新调用:

@user.update_without_password(devise_parameter_sanitizer.sanitize(:account_update))

但我收到 NoMethodError in RegistrationsController#update 错误。

【问题讨论】:

    标签: ruby-on-rails devise controller ruby-on-rails-4


    【解决方案1】:

    我还不知道这是否是一个好习惯,但我将RegistrationsController 的更新操作更改为

    @user.update_attributes(account_update_params)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 1970-01-01
      • 2022-12-12
      • 2016-05-13
      • 2013-03-29
      相关资源
      最近更新 更多