george_m
(George Murdocca)
1
我们正在 我们的集成 中使用 external_id 功能进行主题自动创建。但我注意到,如果我们删除了一个主题,就无法再创建一个具有相同 external_id 的新主题,而是会收到以下错误:
{'action': 'create_post', 'errors': ['External has already been taken']}
在删除了使用该 external_id 的主题后,是否可以重新使用相同的 external_id?
我知道有其他地方讨论过的使用用户对象自定义字段的解决方法,但主题对象似乎不支持自定义字段。有什么办法吗?
pfaffman
(Jay Pfaffman)
2
这是因为已删除的主题被标记为已删除,但并未从数据库中移除。想要将 ID 与另一个主题重新关联似乎是个坏主意(但你没有问)。你可以强制主题被实际删除(引入永久删除帖子功能 可能是实现方法)。
george_m
(George Murdocca)
3
您好 @pfaffman
非常感谢您的建议,也感谢您促使我更深入地思考 external_id 的重用问题。
1 个赞
pfaffman
(Jay Pfaffman)
4
除非那些整数真的非常昂贵?
(很高兴我看起来很有帮助而不是讽刺!)希望你能找到一个好的解决方案。
george_m
(George Murdocca)
5
挑战在于,我们用于 Topic 的 external_id 值由于我们正在集成的应用程序(CatalogIt - 提供只读 API)的限制而难以更改(手动操作)。我们在开发过程中经常手动删除并自动重新创建 Topic(这是集成所做的全部工作——当用户单击“讨论此项目”链接时,为 CatalogIt 中的项目创建讨论主题),这迫使我们每次都更改此值。如果在删除 Topic 后未更改该值,并且用户稍后单击“讨论此项目”链接,我们将遇到“external already taken”错误。
也许归档而不是删除是更好的主意,或者也许有一个隐藏/取消隐藏机制我们可以利用。我对 Discourse 不熟悉,需要做一些研究,我会深入研究并看看能找到什么。
system
(system)
关闭
6
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.