我有一個使用所有不同種類的字符的城市名稱的數據庫,從åäö到越南的標誌。地名全部採用大寫格式,例如「紐約」和「艾克斯普羅旺斯」。Heroku/postgresql搜索
我現在的問題是嘗試在Heroku中使用postgresql搜索這些城市名稱。
p = Place.where("upper(name) LIKE '%" + place_name_searched.to_s.upcase.tr('åäöüñï','ÅÄÖÜÑÏ') + "%'").first
這是我想出了最好的,但它只是但氧化鋁等的修復和沒有捕捉到所有的100多個不同的人物有在那裏,例如「é」。解決辦法是不要再填寫該字符串。
一個普遍的問題是,upper(name)似乎可以翻譯所有內容,但是隻能處理英文字母。因此,相應的搜索將是.where(「TÄBYlike'TäBY')if place_name_searched ='täby'。
那麼,如何將postgresql條目(例如」Täby「和」JiddḨafş「)匹配到相應的字符串,由用戶(「塔比」,「jidd哈夫斯」)?
這一切工作正常,在應用程序的我的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