而devise預設的edit功能是需要輸入當前密碼的。有些情況下不希望如此,就可以利用以下方法(客製化devise 的controller)
首先 在 config/routes.rb 裡,加入
再來在users/registrations_controller.rb裡,加上
最後把edit.html.erb頁面裡的current password欄位拿掉就可以摟!!
===2017.2.12更新
後來發現這樣做的話,密碼就不能改了OAO
所以把registration_controller裡改一下
變成current_password的欄位還是show出來
然後判斷,如果current欄位跟new_password都是空的
那就不用current_password 就可以改其他資料
參考資料
https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password
devise_for :users, controllers: { registrations: 'users/registrations' }
(如果devise:controller 的scope 是 users的話,即rails g devise:controllers users )
再來在users/registrations_controller.rb裡,加上
protected
def update_resource(resource, params)
params.delete :current_password
resource.update_without_password(params)
end
最後把edit.html.erb頁面裡的current password欄位拿掉就可以摟!!
===2017.2.12更新
後來發現這樣做的話,密碼就不能改了OAO
所以把registration_controller裡改一下
變成current_password的欄位還是show出來
然後判斷,如果current欄位跟new_password都是空的
那就不用current_password 就可以改其他資料
protected
def update_resource(resource, params)
if params[:current_password].blank? && params[:password].blank?
resource.update_without_password(params.except(:current_password))
else
super
end
end
參考資料
https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password
沒有留言:
張貼留言