我想在现有模型中实现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
但它绝对可能会遗漏一些边缘情况,并且处理字符串的方式与“普通”工作流程不同。我正在寻找的是重用常规创建/更新流和本机行为的方法。
答案 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