ユーザーがアプリケーションにサインアップして、ユーザー名が既に存在するかどうかを確認するときに、ajax 検証を行っています。ユーザー名フィールドのフォーカスを外したりぼかしたりするたびに、リクエストが行われます。ローカルでは MySQL を使用しており、Heroku では Postgres を使用しているため、開発マシンでローカルに完全に機能するため、問題が何らかの形でそこにあると想定しています。
登録されたユーザー名は、たとえばマットです...
発達:
- マット=撮影は真です
- マット = 撮影は真です
- MATT = 撮影は true
- MaTt = 取得は true など...
製造:
- マット=撮影は真です
- マット = 撮影は false
- MATT = 撮影は false
- MaTt = 取得は false
そして、ここにその方法があります(さらに一歩進んでダウンケースを強制しようとしたこともわかりますが、ローカルでは正常に機能しますが、本番環境では機能しません)...
def checkname
scrubb = ActionController::Base.helpers.sanitize(params[:username], :tags => '')
user = User.find_by_username(scrubb, :conditions => [ "lower(username) = ?", scrubb.downcase ])
if user.blank?
render :json => { :isAvailable => true }
else
render :json => { :isAvailable => false }
end
return
end
**編集* *
これは、生成された MySQL クエリの出力です。
SELECT `users`.* FROM `users` WHERE `users`.`username` = 'MATT' AND (lower(username) = 'matt') LIMIT 1
したがって、実際の問題は、Rails が生成する AND ステートメントにあるようです。どうすればそれを削除できますか?