Friendly_id具有范围和历史的唯一约束

时间:2018-06-25 11:55:22

标签: ruby-on-rails friendly-id

'rails', '~> 5.1.2'
'friendly_id', '~> 5.1.0'

我正在尝试将“作用域”添加到现有的子弹中。

class Model < ApplicationRecord   
  extend FriendlyId   
  belongs_to :board   
  friendly_id :slug_candidates, use: [:slugged, :scoped, :history], :scope => :board

但是,当重复项的范围应该不同时,我会出现此错误。

  

ActiveRecord :: RecordNotUnique:PG :: UniqueViolation:错误:重复   键值违反唯一约束“ index_models_on_slug”的详细信息:   密钥(slug)=(xxx-xxxx-xxx)已存在。

查看日志,我可以看到范围正在生成并列出了范围模型(通过board_id,xx),我认为是应有的,但是保存时似乎并没有在搜索范围。 / p>

如果我在同一范围内创建重复项,则会添加重复代码(“ 42a8d035-ba2f-4a51-b85e-0872c4e207e2”)。

我希望这是有道理的-任何帮助将不胜感激。

谢谢, 安迪

1 个答案:

答案 0 :(得分:0)

因此,事实证明,我应该多考虑一下此帖子。

“Key (slug)=() already exists” in friendly_id

在现有模型上添加范围意味着我没有考虑,但是不得不删除现有模型上的unique = true。

无论如何-喜欢great_id很棒的产品!