私は、åäöからベトナムの標識まで、あらゆる種類の文字を使用する都市の名前のデータベースを持っています。地名はすべて大文字の形式です(例:「ニューヨーク」や「エクスアンプロヴァンス」)。
私の問題は、postgresqlを使用するHerokuでこれらの都市名を検索しようとすることです。
p = Place.where("upper(name) LIKE '%" + place_name_searched.to_s.upcase.tr('åäöüñï','ÅÄÖÜÑÏ') + "%'").first
これは私が思いついた最高のものですが、これはåäöなどの修正に過ぎず、「é」など、そこにある100以上の異なる文字すべてをキャッチするわけではありません。解決策は、その文字列をこれ以上入力しないことです。
一般的な問題は、upper(name)はすべてをうまく翻訳しているように見えますが、upcaseは英語の文字しか処理できないことです。したがって、place_name_searched ='täby'の場合、対応する検索は.where( "TÄBYlike'TäBY')になります。
では、「Täby」や「JiddḨafş」などのpostgresqlエントリを、ユーザーが入力した小文字の対応する文字列( "täby"、 "jidd hafs")に一致させるにはどうすればよいですか?
Mysqlバージョンのアプリケーションではすべて正常に動作しますが、Herokuにアップロードするとすべて失敗します。