设计软删除记录的问题.任何想法,如何解决它



我正在使用丢弃宝石进行删除。用户软删除后,用户仍可能收到忘记密码的电子邮件。因为设计密码控制器不在乎它的软删除与否?

我正在使用以下 Devise 模块,似乎我可能需要修复所有模块:-

  • :可确认,
  • :追 讨
  • :超时,
  • :可追踪
  • :上锁
  • :可认证

虽然我能够通过覆盖用户模型中的方法来解决可验证find_for_authentication登录问题,但它似乎不适用于其他 Devise 模块。

任何想法,我如何解决 Devise 的软删除问题?

我正在使用设计(4.6.2(,丢弃(1.0.0(,轨道5.1.6.2

您可以使用默认范围,例如:

class User
  ...
  default_scope -> { kept }
  ...
end

其他丢弃范围(如丢弃和with_discarded(应该继续工作,因为它们在同一列 (discard_column( 上运行,因此它们将覆盖默认范围。这样,就不需要覆盖任何设计方法

最后,我能够通过覆盖user.rb中的以下方法来修复它。 如果遇到相同的问题,任何其他人都可以通过以下方式修复它:

# Override to add condition to ignore soft deleted users
def self.find_first_by_auth_conditions(conditions, opts = {})
  opts.reverse_merge!(discarded_at: nil)
  super
 end

最新更新