私は、すべての異なる種類の文字を使用する都市の名前を持つデータベースをåäöからvietnamese signsに持っています。地名はすべて大文字で書かれています。 "ニューヨーク"と "エクスアンプロヴァンス"。Heroku/postgresql検索
ここで私の問題は、postgresqlを使用するHerokuでこれらの都市名を検索しようとすることです。
p = Place.where("upper(name) LIKE '%" + place_name_searched.to_s.upcase.tr('åäöüñï','ÅÄÖÜÑÏ') + "%'").first
これは私が出ている最高のですが、それは例えば、そこに存在しているだけですが、AAOなどの修正およびすべての100+の異なる文字をキャッチしていません"é"解決策は、その文字列をそれ以上記入することではありません。
一般的な問題は、upper(name)はすべてをうまく翻訳するようですが、upcaseは英語の文字しか扱えないということです。
したがって、 "Täby"や "JiddḨafş"などのpostgresqlエントリを対応する文字列に一致させるには、対応する文字列をdowncaseで指定します(例: "Täby"のような 'TäBY')。 、ユーザー(「タビー」、「jidd hafs」)によって入力された?
それはすべてのアプリケーションの私のMySQLのバージョンでは正常に動作しますが、私はそれがすべて失敗したHerokuのにアップロードしたら。
は直接関連していませんが、いつでも思い出させることができます:[SQLインジェクションに注意してください](http://guides.rubyonrails.org/active_record_querying.html#conditions) –
また、[unaccent ](http://www.postgresql.org/docs/current/interactive/unaccent.html)。 HerokuがCREATE EXTENSION unaccent;でPostgreSQL 9.0以降をインストールできるかどうかは不明です。 –
ヒントをありがとう! – Christoffer