# 通过 Ruby 控制台批准新用户 - 20200613.042854

**URL:** https://meta.discourse.org/t/approving-a-new-user-with-ruby-console-20200613-042854/154690
**Category:** Development
**Created:** [2020年六月12日 18:58 UTC](https://meta.discourse.org/t/approving-a-new-user-with-ruby-console-20200613-042854/154690 "2020-06-12T18:58:58Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![csmu](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/csmu/32/124581_2.png) [@csmu](https://meta.discourse.org/u/csmu)
#### Post date: [2020年六月12日 18:58 UTC](https://meta.discourse.org/t/approving-a-new-user-with-ruby-console-20200613-042854/154690/1 "2020-06-12T18:58:58Z")

</div>

这在 3 月左右还能正常工作，现在却因某种原因失败了。

```plaintext
ReviewableUser.find_by(target:user).perform(csmu, :approve_user)
NoMethodError: undefined method `perform' for nil:NilClass

```

user 和 csmu 是有效的对象。  
我们当前使用的是 2.4.0.beta11 版本，计划下周升级到最新的 beta 版本。

有什么建议吗？

---

<div class="post-metadata">

### Author: ![neounix](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/neounix/32/215617_2.png) [@neounix](https://meta.discourse.org/u/neounix)
#### Post date: [2020年六月13日 07:05 UTC](https://meta.discourse.org/t/approving-a-new-user-with-ruby-console-20200613-042854/154690/2 "2020-06-13T07:05:49Z")

</div>

嗨 @Keith，

我的建议是在测试服务器上安装最新版本的 Discourse，然后使用当前生产环境的完整备份（包括上传文件）恢复该测试服务器上 Discourse 实例的数据库。

之后，你可以在安全的测试环境中先测试该实例，看看运行情况如何。

我们就是这么做的。

希望这能帮到你。

---

<div class="post-metadata">

### Author: ![csmu](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/csmu/32/124581_2.png) [@csmu](https://meta.discourse.org/u/csmu)
#### Post date: [2020年六月15日 07:49 UTC](https://meta.discourse.org/t/approving-a-new-user-with-ruby-console-20200613-042854/154690/3 "2020-06-15T07:49:53Z")

</div>

我认为问题在于未激活用户。

以下代码可以正常工作：

```plaintext
admin_user = User.find_by_username('{{admin_username}}')

user = User.create
user.name = '{{name}}'
user.username = '{{username}}'
user.email = '{{email}}'
user.password = '{{password}}'
user.activate
user.admin = true
user.moderator = true
user.save!

ReviewableUser.find_by(target:user).perform(admin_user, :approve_user)

```
