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, но ошибка сохраняется.

Изменить

Удаление :history решает проблему.

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


person Nima Izadi    schedule 13.06.2013    source источник


Ответы (1)


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

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

Например:

def up
  MyModel.all.map(&:save)
end
person pauldub    schedule 10.09.2013