Ich habe ein ActiveRecord
Modell Foo
, das ein name
Feld hat. Ich möchte, dass Benutzer nach Namen suchen können, aber ich möchte, dass bei der Suche Groß- und Kleinschreibung und Akzente ignoriert werden. Daher speichere ich auch ein canonical_name
Feld, nach dem gesucht werden soll:
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
Ich muss das "Etwas hier" ausfüllen, um die akzentuierten Zeichen zu ersetzen. Gibt es etwas besseres als
x.downcase.gsub(/[àáâãäå]/,'a').gsub(/æ/,'ae').gsub(/ç/, 'c').gsub(/[èéêë]/,'e')....
Und da ich nicht auf Ruby 1.9 bin, kann ich diese Unicode-Literale nicht in meinen Code einfügen. Die tatsächlichen regulären Ausdrücke sehen viel hässlicher aus.