2015-05-26 46 views
1

我有Ruby on Rails 4應用程序,我也在使用Devise gem來提供登錄/註冊。用戶無法刪除自己的帳戶,Rails 4 + Devise

一切正常,但登錄的用戶無法刪除自己的帳戶。任何其他刪除功能的工作,所以JavaScript不應該是一個問題。

鑑於:

<%= link_to "Delete account", registration_path(resource_name), data: { confirm: "Your profile will be permanently deleted. Are you sure?" }, method: :delete%> 

我重寫默認設計登記控制器本:

class RegistrationsController < Devise::RegistrationsController 
    clear_respond_to 
    respond_to :json 

    protected 

    def update_resource(resource, params) 
    resource.update_without_password(params) 
    end 
end 

我的日誌文件:

Started DELETE "/ru/users" for xx.xxx.xxxx.xx at 2015-05-26 22:30:45 +0300 
Processing by RegistrationsController#destroy as HTML 
    Parameters: {"authenticity_token"=>"dXKjMMmKibIy2LNCrR66JuThjPzqsdtjFMXTCubcFe8=", "locale"=>"ru"} 
    [1m[36mUser Load (0.3ms)[0m [1mSELECT `users`.* FROM `users` WHERE `users`.`id` = 66 ORDER BY `users`.`id` ASC LIMIT 1[0m 
    [1m[35mCountry Load (0.3ms)[0m SELECT `countries`.* FROM `countries` WHERE `countries`.`id` = 1 LIMIT 1 
    [1m[36m (0.6ms)[0m [1mSELECT COUNT(*) FROM `girls` WHERE (country_id=1) AND (vip_recomend >= '2015-05-26 22:30:45')[0m 
    [1m[35m (0.4ms)[0m SELECT COUNT(*) FROM `girls` WHERE (country_id=1) AND (recomend >= '2015-05-26 22:30:45') 
    [1m[36m (0.3ms)[0m [1mSELECT COUNT(*) FROM `girls` WHERE (country_id=1) AND (highlight >= '2015-05-26 22:30:45')[0m 
    [1m[35m (0.3ms)[0m SELECT COUNT(*) FROM `girls` WHERE (country_id=1) AND (vip_highlight >= '2015-05-26 22:30:45') 
    [1m[36mRegion Load (0.2ms)[0m [1mSELECT `regions`.* FROM `regions` WHERE `regions`.`country_id` = 1[0m 
    [1m[35mList Load (0.3ms)[0m SELECT `lists`.* FROM `lists` WHERE (billing_id =5) ORDER BY `lists`.`id` ASC LIMIT 1 
    [1m[36m (0.3ms)[0m [1mBEGIN[0m 
    [1m[35m (0.2ms)[0m COMMIT 
    [1m[36m (0.2ms)[0m [1mBEGIN[0m 
    [1m[35m (0.2ms)[0m COMMIT 
Redirected to http://xxxxxxxxxxx.xxx.xxx/ru 
Completed 302 Found in 24ms (ActiveRecord: 4.4ms) 

說明

當用戶按下刪除鍵,用戶得到的消息:

translation missing: ru.devise.registrations.user.destroyed 

也是他從他的帳戶註銷,但實際的破壞從未發生過。什麼可能是可能的問題?

謝謝你的時間。 最良好的祝願。

回答

1

這裏Destroy通過使用destroy設計registrations_controller的方法來刪除用戶帳戶。對於translation missing: ru.devise.registrations.user.destroyed你需要改變devise.ru.yml文件 -

ru: 
    devise: 
    registrations: 
     user: 
     destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.' 

這是後臺進程。所以,你在日誌中看不到(刪除sql查詢)。

+0

,謝謝,但是當我嘗試登錄時,它的賬號仍然存在。帳戶刪除永遠不會發生,並且錯誤消息不會打擾我。 – Edgars

+0

我這個鏈接路徑是錯誤的。它應該是<%= link_to「刪除帳戶」,edit_user_path(用戶),data:{confirm:「你的個人資料將被永久刪除,你確定嗎?」 },方法:: delete%> –

+0

或者你也可以重寫方法 - def destroy current_user.delete current_user.save .......................... ..結束 –