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