Автоматически генерировать транслитерированные кириллические слизни с friendly_id

Я хочу реализовать friendly_id в существующую модель. Приложение использует russian gem, который хорошо обрабатывает новые или сохраненные вручную записи, но, похоже, не работает, когда я обновляю записи из командной строки.

User.find_each(&:save) (как предполагается в friendly_id docs) генерировать слагов типа --<id>,

Я использовал пользовательский метод нормализации для предоставления транслитерированного слага:

def normalize_friendly_id(input)
  Russian.transliterate input.to_s.mb_chars.downcase
end

но он определенно может пропустить некоторые крайние случаи, и обрабатывает строку иначе, чем "нормальный" рабочий процесс. То, что я ищу, - это способ повторного использования обычного потока создания / обновления и собственного поведения.

1 ответ

Лучший способ решить эту проблему:

1) Добавьте драгоценный камень 'babosa' в ваш Gemfile

gem 'friendly_id'
gem 'babosa'

2) метод Owerride friendly_id в вашей модели

def normalize_friendly_id(text)
  text.to_slug.transliterate(:russian).normalize.to_s
end
Другие вопросы по тегам