2017-01-16 7 views
0

EDIT:"Why doesn't this query work on Heroku?"の複製ではありません。検索には文字列は含まれず、日付クエリのみが含まれます。Rails App Search Barはローカルでは動作しますが、Herokuでは動作しません

Railsアプリケーションは検索時にエラーをローカルにスローしませんが、prodで検索するたびにエラーをスローします。これは正常に動作するために使用されました。私はSQLite3に対して開発中で、最近検索バーと直接対話するものは変更していません。私は確かめるためにかなり古い枝に戻りました。それはまだ壊れていた。 1.3.9でSQLite3を実行していて、gemfileで指定しています。ここで

デフ私のモデルからの検索です:

def self.search(search) 
    where("startDay LIKE ?", "%#{search}%") 
end 

ビュー:私はそれを含める必要があり、他の

<%= form_tag(weeks_path, :method => "get", id: "search-form") do %> 
    <h4>Search for weeks by start date </h4> 
    <%= text_field_tag :search, params[:search], placeholder: "Search Weeks", value: Date.today.beginning_of_week(:sunday) - 7 %> 
    <%= submit_tag "Search", :name => nil %> 
<% end %> 

ものは、問題の解決に役立つかもしれませんか?

+0

文字列が含まれていないため、検索の大文字と小文字を区別しないように修正されています。 – CodeBoy

答えて

1

主なものは、文字列や日付の検索ではありません。問題は、ローカルデータベースが本番データベースと異なることです。 PostgreSQLはLIKE操作をdatetimeフィールドに直接適用することはできません。文字列操作を使用する前に明示的に文字列に変換する必要があります。開発環境の実動型データベースに切り替えることなく、今後も同様の種類のバグを取得し続けます。 PostgreSQLの

次のようにこのクエリが書かれるべきである。

where("startDay::text LIKE ?", "%#{search}%") 
+0

私は、異なるデベロッパーとプロードのデータベースを持っているのは良い習慣ではないことを理解していますが、今すぐ切り替えると問題が解決する理由はわかりません。このコードは数か月で変更されておらず、データベースが常に異なっているにもかかわらず以前は動作していました...私はあなたの提案を試みますが、swtichingがなぜ私の問題を解決するのかはっきりしていません。 – CodeBoy

+0

問題を解決するために切り替えているわけではありません。将来の問題の発生を防ぐために切り替えています。 –

+1

Gotcha。だから、これは問題の解決策ではなく、2つのデータベース間の衝突を防ぐための提案ですか?どのように問題を解決するための任意のアイデア? – CodeBoy

0

将来的にはこれを探している人のために。 私はpostgreSQLに切り替えましたが、私のアプリケーションが99%完結しているので、私は自分のファイルを元に戻し、Herokuを放棄する構文を変更しようとせず、sqlite3を使い続け、

関連する問題