フィールドを持つ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 リテラルを自分のコードに入れることはできません。実際の正規表現はもっと醜く見えます。