1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

date型で絞り込み検索を実装後、herokuにデプロイしたらエラーが出た

Last updated at Posted at 2020-02-17

#内容
Ruby on Railsのアプリをherokuにデプロイした際に、絞り込み検索でエラーが出てしまったので解決策を備忘録として残していく。

#やりたいこと
heroku上で、date型を使用して要素の絞り込み検索をしたい。

2019-08-12 検索
date name expense
2019-08-12 food ¥890
2019-08-12 CD ¥1500
2019-08-12 laptop ¥190000

####問題のコード
@expenses = current_user.expenses
@results = @expense.where('date LIKE ?', "%#{params[:date]}%")

費用の全データを取ってきて、date型で検索文字と当てはまったものを@resultsに入れている。

#エラー
上記のコードでheorkuにデプロイしたら下記のエラーが出現。

No operator matches the given name and argument types. You might need to add explicit type casts.
ActionView::Template::Error (PG::UndefinedFunction: ERROR:  operator does not exist: date ~~ unknown

簡単に翻訳すると、与えられた名前と型がオペレーターに合ったものがない。ちゃんとした型が必要。
エラー: date ~~ unknown ていうのはない。

とのこと。
どうやらdate型では正しくないから、date型を文字列に直す必要があるらしい。

#試したこと
@results = @expense.where('date::text LIKE ?', "%#{params[:date]}%")

::textをdateにつけることでdate型が文字列になっている(と思われる。)

#MySQLの場合
MySQLの場合は、::textは必要なく普通に動いた。

#まとめ
詳しくは理解できていないが、PostgreSQLのバージョンによってはdate型などは自動で判断されていたらしい。
しかし、現在のバージョンでは変更する必要があるとのこと。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?