【问题标题】:How to recover an user account with a specific email address in Ruby ( User Devise Gem use )如何在 Ruby 中恢复具有特定电子邮件地址的用户帐户(用户设计 Gem 使用)
【发布时间】:2016-07-18 15:30:59
【问题描述】:

我在这里问如何恢复碰巧被删除的用户帐户(作为错误)。例如,用户的电子邮件地址是“sungpah+100@gmail.com”,并且想再次使用此电子邮件地址作为帐户。

我尝试创建一个新用户并插入相同的电子邮件地址,但控制台输出是

用户存在 (1.4ms) SELECT 1 AS one FROM users WHERE users.email = BINARY 'sungpah+100@gmail.com' LIMIT 1 (1.1ms) 回滚

我可以再次使用 'sungpah+100@gmail.com' 注册帐户吗?

当我尝试使用以下命令搜索帐户时:User.find_by(:email => 'sungpah+1@gmail.com',结果当前为零!

id 是 950,现在如果我使用 User.find(950) 搜索,ActiveRecord::RecordNotFound: 找不到 'id'=950 的用户 [WHERE users.deleted_at IS NULL] 就是结果!

期待看到任何回应! 最好的

【问题讨论】:

    标签: ruby-on-rails email devise


    【解决方案1】:

    如果没有更多信息,很难确定,但从您问题中的 deleted_at 查询来看,您似乎正在使用诸如 acts_as_paranoid 之类的 gem,它可以让您隐藏和恢复记录而不删除它们。所以这很好!

    试试user = User.unscoped.find(950)。

    您可能有一个默认范围应用于此 acts_as_paranoid gem 提供的 User 模型,它会过滤掉所有存在 deleted_as 的记录。 unscoped 将删除该范围并让您查找所有记录。

    找到用户后,您可以通过删除deleted_at 字段来恢复它。

    user.update_attributes(deleted_at: nil)
    

    【讨论】:

    • 嗨!谢谢克里斯曼德森。当我发出命令时,我收到了这条消息:SELECT users.* FROM users WHERE users.id = 950 LIMIT 1
    • 并返回用户信息。但之后我试图用这个命令找到这个用户:User.find(950),我得到“ActiveRecord::RecordNotFound: 找不到用户'id'=950 [WHERE users.deleted_at IS NULL ]”消息,这与我上面的相同。你能给我任何前进的提示吗(:?
    • 您需要然后清空deleted_at 字段,在我的答案中添加说明。
    猜你喜欢
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2021-11-24
    相关资源
    最近更新 更多