# 信任等级 0 + 自定义字段徽章

**URL:** https://meta.discourse.org/t/trust-level-0-custom-field-badge/179598
**Category:** Data & reporting
**Tags:** sql-triggered-badge
**Created:** [2021年二月13日 19:49 UTC](https://meta.discourse.org/t/trust-level-0-custom-field-badge/179598 "2021-02-13T19:49:26Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [2021年二月13日 19:49 UTC](https://meta.discourse.org/t/trust-level-0-custom-field-badge/179598/1 "2021-02-13T19:49:26Z")

</div>

你好。我想根据信任等级和下拉自定义字段中选定的选项创建一个徽章，但我一直收到以下消息（另外，我不确定查询的其他部分是否正确，所以任何帮助都将不胜感激）：

```
ERROR: column "Woman" does not exist
LINE 10: ) AND LENGTH(cf.value) = "Woman"

```

**它应该如何工作：**  
所以我创建了一个名为“性别”的下拉用户自定义字段，并设置了两个选项：“男”和“女”。  
如果用户 X 是男性且已注册（信任等级 0），则应授予“男战士”徽章，否则授予“女战士”徽章。

另外，有人能告诉我可以在哪里查看所有现有自定义字段的 **用户字段编号** 吗？（在我的示例中，我使用的是字段名称，但以防万一）。

目前的查询（无法工作）：

```
SELECT u.id, current_timestamp, cf.user_id user_id, cf.updated_at granted_at 
FROM users u, user_custom_fields cf 
INNER JOIN user_fields uf
      ON uf.id = (0 || regexp_replace(cf.name, 'user_field_', ''))::integer
      AND uf.name = 'Gender'
WHERE trust_level >= 0 AND (
  :backfill OR u.id IN (:user_ids)
) AND LENGTH(cf.value) = "Woman"

```

非常感谢！🙂

 ![image](https://global.discourse-cdn.com/meta/original/3X/7/2/727c0f636c48e30ae9d86fc24b7d8a589b396e27.png)

---

<div class="post-metadata">

### Author: ![cosdesign](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/cosdesign/32/208585_2.png) [@cosdesign](https://meta.discourse.org/u/cosdesign)
#### Post date: [2021年二月20日 11:19 UTC](https://meta.discourse.org/t/trust-level-0-custom-field-badge/179598/2 "2021-02-20T11:19:06Z")

</div>

自定义字段现在可以工作了（[我尝试实现这个示例](https://meta.discourse.org/t/badges-based-on-user-custom-fields/276719/4?u=cosdesign)），但无论我输入什么信任等级，潜在用户数量都保持不变：

```
    SELECT cf.user_id user_id, cf.updated_at granted_at
    FROM user_custom_fields cf
    INNER JOIN user_fields uf
      ON uf.id = (0 || regexp_replace(cf.name, 'user_field_', ''))::integer
      AND uf.name = 'Gender'
    WHERE cf.value = 'Woman'
AND EXISTS (
  SELECT u.id user_id, current_timestamp granted_at FROM users u
    WHERE trust_level >= 0 AND (
  :backfill OR u.id IN (:user_ids)
    )
)

```

 ![image](https://global.discourse-cdn.com/meta/original/3X/2/d/2d3575074620a51f1bece085664716fbf65b2446.png)

有什么想法吗？
