Lin*_*y B 5 ruby-on-rails friendly-id acts-as-paranoid
我目前在模型上使用acts_as_paranoid 和Friendly_id (5.0.1),当我销毁模型并尝试创建一个新模型来生成相同的slug时,我得到:
ERROR: duplicate key value violates unique constraint "index_papers_on_slug"
Run Code Online (Sandbox Code Playgroud)
我需要以某种方式获取代码来检查所有对象的范围内是否已存在 slug,而不仅仅是未删除的对象。
with_deleted在检查 slug 是否已存在时,如何获取要使用的Friendly_id 。我应该指出,我还使用了 slug 历史记录,这可能会使事情进一步复杂化。
深入挖掘后,我意识到,由于我使用的是历史记录,因此 slug 已被完全删除,而对象只是被软删除:
DELETE FROM "friendly_id_slugs" WHERE "friendly_id_slugs"."id" = $1 [["id", 9423]]
Run Code Online (Sandbox Code Playgroud)
所以,我只需要弄清楚如何防止这种情况,我应该没问题,因为看起来unscoped在尝试查找有效的 slug 时,Friendly_id 代码本身已经在使用了。
将以下内容添加到模型中使我能够覆盖 slugs 上的依赖销毁
def has_many_dependent_for_slugs; end
Run Code Online (Sandbox Code Playgroud)
解决方案来自这个github问题的评论。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |