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