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