尝试使用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
答案 0 :(得分:4)
可能是因为SQLite's LIKE(部分)不区分大小写,但PostgreSQL's LIKE区分大小写。试试这个:
where("LOWER(title) LIKE ? OR LOWER(description) LIKE ?", "%#{search.downcase}%", "%#{search.downcase}%")
PostgreSQL也将ILIKE作为LIKE的不区分大小写的版本,但SQLite(也不是标准SQL)不会这样,所以除非你专门针对PostgreSQL,否则你不应该使用ILIKE。
如果您要发布到Heroku,请将您的开发环境切换到PostgreSQL,您将为自己节省一些悲伤和困惑。
另一种可能性是您的Heroku数据库中没有任何数据(或任何匹配的数据)。