我有一个ActiveRecord
模型,Foo
它有一个name
字段。我希望用户能够按名称搜索,但我希望搜索忽略大小写和任何重音符号。因此,我还存储了一个canonical_name
要搜索的字段:
class Foo
validates_presence_of :name
before_validate :set_canonical_name
private
def set_canonical_name
self.canonical_name ||= canonicalize(self.name) if self.name
end
def canonicalize(x)
x.downcase. # something here
end
end
我需要填写“这里的东西”来替换重音字符。有什么比
x.downcase.gsub(/[àáâãäå]/,'a').gsub(/æ/,'ae').gsub(/ç/, 'c').gsub(/[èéêë]/,'e')....
而且,就此而言,由于我不在 Ruby 1.9 上,我不能将那些 Unicode 文字放入我的代码中。实际的正则表达式会看起来更丑陋。