尝试使用 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/