ruby-on-rails - 为什么这个查询在 Heroku 上不起作用?

标签 ruby-on-rails sqlite postgresql heroku

尝试使用 RoR 和 Heroku 实现简单的搜索。这在 localhost 上运行良好,但只要我推送到 Heroku,搜索就不会返回任何结果。我在本地使用 SQlite 而 Heroku 使用 Postgres,对吗?我认为这是问题所在,但经过大量研究后,我似乎找不到解决方案。知道会发生什么吗?一如既往地感谢您的帮助。

def self.search(search)
  if search
   where("title LIKE ? OR description LIKE ?", "%#{search}%", "%#{search}%")
  else
   find(:all)
  end
end

最佳答案

可能是因为 SQLite's LIKE是(部分)不区分大小写但 PostgreSQL's LIKE区分大小写。试试这个:

where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{search.downcase}%", "%#{search.downcase}%")

PostgreSQL 也有 ILIKE 作为 LIKE 的不区分大小写的版本,但 SQLite(也不是标准 SQL)没有,所以你不应该使用 ILIKE,除非你专门针对 PostgreSQL。

如果您要发布到 Heroku,请将您的开发环境切换到 PostgreSQL,这样您就可以避免一些悲伤和困惑。

另一种可能是您的 Heroku 数据库中没有任何数据(或任何匹配数据)。

关于ruby-on-rails - 为什么这个查询在 Heroku 上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7135375/

相关文章:

ruby-on-rails - Rails 功能测试 : sending URL query parameters in POST request

r - 如何将sqlite日期转换为R中的日期

sql - 从数据库中获取数据并填充分区列表

sql - "distinct on"与 postgres 组

ruby-on-rails - Postgres 适配器似乎为实际具有非 NULL 值的列返回 nil 日期

postgresql - 如何使用 psql postgres 在带有通配符的表上授予 SELECT PRIVILEGES

ruby-on-rails - 获取回调 ActiveRecord Rails 的当前名称

ruby-on-rails - 用户中的 NoMethodError #index 'undefined method ` each' for nil :NilClass'

ruby-on-rails - 您的 Ruby 版本是 3.3.0.dev,但您的 Gemfile 指定 >= 3.3.0

sqlite - 无法通过 ODBC 连接 Access 到 SQLite