删除主题后重新使用 `external_id`

我们正在 我们的集成 中使用 external_id 功能进行主题自动创建。但我注意到,如果我们删除了一个主题,就无法再创建一个具有相同 external_id 的新主题,而是会收到以下错误:

{'action': 'create_post', 'errors': ['External has already been taken']}

在删除了使用该 external_id 的主题后,是否可以重新使用相同的 external_id

我知道有其他地方讨论过的使用用户对象自定义字段的解决方法,但主题对象似乎不支持自定义字段。有什么办法吗?

这是因为已删除的主题被标记为已删除,但并未从数据库中移除。想要将 ID 与另一个主题重新关联似乎是个坏主意(但你没有问)。你可以强制主题被实际删除(引入永久删除帖子功能 可能是实现方法)。

您好 @pfaffman
非常感谢您的建议,也感谢您促使我更深入地思考 external_id 的重用问题。

1 个赞

除非那些整数真的非常昂贵?:thinking:

(很高兴我看起来很有帮助而不是讽刺!)希望你能找到一个好的解决方案。

挑战在于,我们用于 Topic 的 external_id 值由于我们正在集成的应用程序(CatalogIt - 提供只读 API)的限制而难以更改(手动操作)。我们在开发过程中经常手动删除并自动重新创建 Topic(这是集成所做的全部工作——当用户单击“讨论此项目”链接时,为 CatalogIt 中的项目创建讨论主题),这迫使我们每次都更改此值。如果在删除 Topic 后未更改该值,并且用户稍后单击“讨论此项目”链接,我们将遇到“external already taken”错误。

也许归档而不是删除是更好的主意,或者也许有一个隐藏/取消隐藏机制我们可以利用。我对 Discourse 不熟悉,需要做一些研究,我会深入研究并看看能找到什么。

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.