我有一个ActivityType模型,它在创建后创建一个动态页面,其中一个slug等于ActivityType的slug。
如果这个slug已经存在一个页面,它会抛出一个验证错误,所以我在尝试保存之前更改了ActivityType的slug,假设已经存在一个带有该slug的Dynamic页面。
我已经写了以下代码:
def check_and_change_slug
n = 1
slug = title
while DynamicPage.exists?(slug: slug)
slug = title + "-#{n}"
n + 1
end
end
我的问题是,如果我在保存记录之前执行此代码,友情ID是否会尝试创建一个新的slug,或者只是选择我手动分配的那个?
我查看了文档,但似乎无法找到任何内容。
提前致谢。
答案 0 :(得分:1)
您可以使用candidates
功能来实现此目的:
class ActivityType < ActiveRecord::Base
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
n = 1
slug = title
while DynamicPage.exists?(slug: slug)
slug = title + "-#{n}"
n += 1
end
end
end