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

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

User.find_each(&:save) (как указано в документации friendly_id) генерируют слаги, такие как --<id>.

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

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

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


person lifecoder    schedule 17.07.2014    source источник


Ответы (1)


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

1) Добавьте gem 'babosa' в свой Gemfile

gem 'friendly_id'
gem 'babosa'

2) Переопределите метод friendly_id в вашей модели

def normalize_friendly_id(text)
  text.to_slug.transliterate(:russian).normalize.to_s
end
person Yury Matusevich    schedule 01.06.2015
comment
сейчас text.to_slug.transliterate(:russian).normalize.to_s - person hlcs; 06.11.2016