如何允许用户在设计软删除后重新注册

时间:2018-03-15 09:47:49

标签: ruby-on-rails ruby devise soft-delete

这里的一个初级问题:如何在注册中设置单独的路线,以便如果电子邮件存在但具有deleted_at标记,则可以重新激活它?

我正在使用带有Ruby on Rails应用程序的Devise,我想为用户进行软删除。如果他们改变主意并回到网站,我希望他们能够获得他们的信息。

说明here非常适合删除帐户。我的registration.rb文件现在包括:

  def soft_delete
    update_attribute(:deleted_at, Time.current)
  end

  ensure user account is active
  def active_for_authentication?
    super && !deleted_at
  end

  def inactive_message
    !deleted_at ? super : :deleted_account
  end

我创建了一个自定义注册控制器,包括:

class Registrations::RegistrationsController < Devise::RegistrationsController
  def destroy
    resource.soft_delete
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
    set_flash_message :notice, :destroyed
    yield resource if block_given?
    respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name) }
  end
end

不幸的是,当我尝试重新激活它时,登录功能的行为就好像电子邮件不存在(不登录),并且注册功能就像电子邮件确实存在一样(说, “已有人带走了”)。

This answer提到创建自定义方法(我做过):

 def reactivate_user
    update_attribute(:deleted_at, nil)
    registration_session_path
  end

但也创建了一条单独的路线。我不确定Devise如何或在哪里做到这一点。

任何帮助表示赞赏!

0 个答案:

没有答案