2

Контекст довольно просто, у меня есть модель курса, который простирается от FriendlyId следующим образом:FriendlyId не добавляя последовательности и бросали ActiveRecord :: RecordNotUnique

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 не добавляет порядковый номер в конце заготовки ... Любое предложение приветствуется.

Я попытался вернуть строку вместо массива в методе friendly_name, но ошибка сохраняется.

Редактировать

Удаление: история исправляет эту проблему.

Я также пробовал другие ветки (4.0-stable, 4.1.x) от FriendlyId, но это не устраняет проблему.

ответ

2

У меня была такая же проблема с функциями истории: это потому, что FriendlyId будет использовать отдельную таблицу для хранения пули и не будет проверять существующий столбец.

Вы можете создать миграцию и повторно сохранить всю таблицу, чтобы генерировать недостающие слизни в новой таблице slugs.

Например:

def up 
    MyModel.all.map(&:save) 
end 
Смежные вопросы