我目前在模型上使用acts_as_paranoid和friendly_id(5.0.1),当我销毁一个模型并尝试创建一个新模型时,该模型会产生相同的结果:
ERROR: duplicate key value violates unique constraint "index_papers_on_slug"
我需要以某种方式获取检查是否已存在段塞的代码,并检查所有对象的范围,而不仅仅是未删除的对象。
在检查是否已存在段塞时,如何获取friendly_id以使用
with_deleted
。我应该注意的是,我也使用了ug历史,这可能会使事情更加复杂。深入研究后,我意识到,由于我使用的是历史记录,因此,将完全删除该段代码,而仅对该对象进行软删除:
DELETE FROM "friendly_id_slugs" WHERE "friendly_id_slugs"."id" = $1 [["id", 9423]]
因此,我只需要弄清楚如何防止这种情况,就可以了,因为当试图查找有效的子弹时,似乎friendly_id代码本身已经在使用
unscoped
了。 最佳答案
Friendly_id有一个名为 scoped
的模块,该模块可让您在作用域内生成唯一的段塞。所以,大概
class Paper < ActiveRecord::Base
extend FriendlyId
friendly_id :title, :use => :scoped, :scope => :unscoped
end
将解决问题。