У меня есть модель 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 в мой код. Фактические регулярные выражения будут выглядеть намного ужаснее.