使用friendly_id自动生成音译的西里尔文slu

lif*_*der 0 ruby-on-rails transliteration friendly-id ruby-on-rails-3

我想实现friendly_id现有的模型.应用程序使用russiangem,它可以很好地处理新的或手动保存的记录,但是当我从命令行更新记录时它似乎不起作用.

User.find_each(&:save)(正如friendly_id docs syggested)生成slu like之类的--<id>.

我使用自定义规范化方法来提供音译slu ::

def normalize_friendly_id(input)
  Russian.transliterate input.to_s.mb_chars.downcase
end
Run Code Online (Sandbox Code Playgroud)

但它绝对可能会遗漏一些边缘情况,并处理字符串与"正常"工作流程不同.我正在寻找的是重用常规创建/更新流和本机行为的方法.

Yur*_*ich 6

解决此问题的最佳方法:

1)在你的Gemfile中添加gem'babosa'

gem 'friendly_id'
gem 'babosa'
Run Code Online (Sandbox Code Playgroud)

2)模型中的Owerride friendly_id方法

def normalize_friendly_id(text)
  text.to_slug.transliterate(:russian).normalize.to_s
end
Run Code Online (Sandbox Code Playgroud)

  • 现在是`text.to_slug.transliterate(:russian).normalize.to_s` (2认同)