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

时间:2014-07-17 06:57:57

标签: ruby-on-rails-3 friendly-id transliteration

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

User.find_each(&:save)(因为friendly_id docs syggested)会产生像--<id>这样的slu。。

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

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

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

1 个答案:

答案 0 :(得分:6)

解决此问题的最佳方法:

1)在Gemfile中添加gem 'babosa'

gem 'friendly_id'
gem 'babosa'

2)模型中的Owerride friendly_id方法

def normalize_friendly_id(text)
  text.to_slug.transliterate(:russian).normalize.to_s
end