【问题标题】:User can't delete his own account , Rails 4 + Devise用户无法删除自己的帐户,Rails 4 + Devise
【发布时间】:2015-05-26 19:50:01
【问题描述】:

我有 Ruby on Rails 4 应用程序,我也在使用 Devise gem 提供登录/注册。

一切正常,但已登录的用户无法删除自己的帐户。任何其他删除功能都可以工作,所以 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

他也从他的帐户中注销,但实际的破坏从未发生。可能有什么问题?

感谢您的宝贵时间。 最良好的祝愿。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 devise


    【解决方案1】:

    这里Destroy 使用设计registrations_controller 的destroy 方法删除用户帐户。对于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 查询)。

    【讨论】:

    • ,谢谢,但是当我尝试重新登录时,它的帐户仍然存在。帐户删除永远不会发生,错误消息不会打扰我。
    • 我这个链接路径是错误的。应该是
    • 或者您也可以覆盖方法 - def destroy current_user.delete current_user.save ...................... . 结束
    • 你能查一下rake routes给我看看用户的路线吗。
    猜你喜欢
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2015-04-09
    相关资源
    最近更新 更多