2016-09-20 12 views
0
これは開発中の仕事ではなく、生産させるような何?

User.find_by([「名LIKEは?」Herokuの上で作業しますが、開発サーバ上で動作していない

を私はUser.find_by(["name LIKE ?", "DAN DOUGHTY"])

を持っており、それが見つかった

開発サーバー上に"Dan Doughty"という名前のユーザーがいますが、同じユーザーをHerokuのプロダクションで見つけられません。

+0

また、これは1週間働いていて、突然今日は仕事をやめました。 – Doughtz

+0

ポストグルを使用していますか?また、大文字と小文字を区別するために、 'ILIKE'が必要な場合があります – Vasfed

答えて

2

注こと、それが

ので、正確な文字列に一致いずれかになる名前の側の両方downcase

User.find_by(["lower(name) LIKE ?", "DAN DOUGHTY".downcase]) 

またはILIKE

User.find_by(["name ILIKE ?", "DAN DOUGHTY"]) 
+0

であると思われます。これもまた良い解決策です – Doughtz

1

もっと信頼できるものを使用するつもりです。 Arelを使用してこの問題を解決してください。

残念ながら、ちょっと埋葬されていて、少し文書化されていません。そして、従来の知恵は、Railsは大文字小文字を区別しない検索をしないということです。大文字と小文字を区別せずに

:しかし、実際にはそれはありませんLIKEは大文字と小文字が区別される

t = User.arel_table 
User.find_by(t[:name].matches('DAN DOUGHTY')) 
+0

開発時にSQLiteを使用していて、postgresqlデータベースを使用してherokuにデプロイしたときに同じ問題が発生しました。可能な限り生産に近いあなたの開発環境を作る別の理由 – mrstebo

+0

それはまさに問題が – Doughtz

関連する問題