gpt4 book ai didi

ruby-on-rails - rails : devise update user without password

转载 作者:行者123 更新时间:2023-12-04 04:46:59 25 4
gpt4 key购买 nike

我已按照 devise's wiki regarding overriding update method to update user information without adding password 中的说明进行操作,但我仍然收到通知说我不能将密码留空。我被卡住了,我需要一些帮助来追踪问题。

<%= form_for(resource, :as => resource_name, :url => custom_update_user_registration_path, :html => { :method => :put }) do |f| %>
<%= devise_error_messages! %>
<%= f.text_field :first_name %>
<%= f.text_field :last_name %>
<%= f.email_field :email, :autofocus => true %>
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
<% end %>
<%= f.submit "Update" %>

在我的 route :
  devise_for :user, :controllers => { :registrations => "registrations" }, :skip => [:registrations, :sessions] do 

get 'signup' => 'devise/registrations#new', :as => :new_user_registration
post 'signup' => 'devise/registrations#create', :as => :custom_user_registration
get 'users/cancel' => 'devise/registrations#cancel', :as => :cancel_user_registration
get 'account/edit' => 'devise/registrations#edit', :as => :custom_edit_user_registration
put 'account' => 'devise/registrations#update', :as => :custom_update_user_registration
delete 'users/cancel' => 'devise/registrations#destroy'
# devise/sessions
get 'signin' => 'devise/sessions#new', :as => :new_user_session
post 'signin' => 'devise/sessions#create', :as => :user_session
delete 'signout' => 'devise/sessions#destroy', :as => :destroy_user_session

end

这是我的 Controller :
class RegistrationsController < Devise::RegistrationsController
before_filter :check_permissions, :only => [:new, :create, :cancel]
skip_before_filter :require_no_authentication

def check_permissions
authorize! :create, resource
end

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

@user = User.find(current_user.id)
if @user.update_attributes(params[:user])
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
end

我不知道为什么我仍然收到我需要提交密码的错误?有人可以看到我正在俯瞰的东西吗?

谢谢

最佳答案

我刚刚发现我错误地覆盖了我的设备注册。

这是拥有注册 Controller 的正确方法

Rails 3 /devise seems to ignore custom controller

关于ruby-on-rails - rails : devise update user without password,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com