上下文非常简单,我有一个从 FriendlyId 扩展的 Course 模型,如下所示:
extend FriendlyId
friendly_id :friendly_name, use: [:slugged, :history]
def friendly_name
slugs = [self.type_name, self.name]
slugs << self.city.name if self.city
slugs << self.structure.name if self.structure
return slugs
end
如果我创建具有相同类型、名称、城市和结构的课程,我会收到以下错误:
!! #<ActiveRecord::RecordNotUnique: PG::Error: ERROR: duplicate key value
violates unique constraint "index_courses_on_slug"
DETAIL: Key (slug)=(cours-sevillanas-copie-paris-12-la-trianera) already exists.
我不明白为什么 FriendlyId 不在 slug 末尾添加序列号......欢迎任何建议。
我试图在friendly_name 方法中返回一个字符串而不是一个数组,但错误仍然存在。
编辑
删除 :history 解决了这个问题。
我也尝试过 FriendlyId 的其他分支(4.0-stable、4.1.x),但它不能解决问题。