【发布时间】:2011-09-13 04:29:57
【问题描述】:
此搜索条件在 MySQL 和 SQLite 中运行良好,但在 PostgreSQL 中失败:
控制器:
@inventories = Inventory.search(params[:search], params[:page])
型号:
def self.search
paginate :per_page => 10,
:page => page,
:conditions => ['part_number = ? OR item LIKE ? OR catalognumber LIKE ?', "#{search}", "%#{search}%", "%#{search}%"],
:order => 'item'
end
IT 在 HEROKU 的 PostgreSQL 日志中产生了这个错误:
ActiveRecord::StatementInvalid (PGError: ERROR: invalid input syntax for integer: ""
2011-06-11T20:25:46+00:00 app[web.1]: : SELECT * FROM "inventories" WHERE (part_number = E'' OR item LIKE E'' OR catalognumber LIKE E'') ORDER BY item LIMIT 10 OFFSET 0):
我该如何解决这个问题?
解决方案...这是使用 LIKE 而不是 ILIKE 的问题 http://www.postgresql.org/docs/8.3/static/functions-matching.html
【问题讨论】:
-
提示:使用 ILIKE 而不是 LIKE,这样您的搜索在 Heroku 上不区分大小写。
标签: ruby-on-rails postgresql search activerecord heroku