Автоматически генерировать транслитерированные кириллические слизни с 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