FriendlyId не добавляет последовательность и выбрасывает ActiveRecord::RecordNotUnique

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

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, но это не решает проблему.

1 ответ

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

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

Например:

def up
  MyModel.all.map(&:save)
end
Другие вопросы по тегам