2011-08-20 48 views
0

试图用RoR和Heroku实现简单的搜索。这在localhost上工作正常,但只要我推到Heroku,搜索将不会返回结果。我在本地使用SQlite,Heroku使用Postgres,对吗?我认为这是问题,但经过相当多的研究后,我似乎无法找到解决方案。任何想法可能会发生什么?帮助一如既往的赞赏。为什么这个查询不能在Heroku上运行?

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

回答

4

大概是因为SQLite's LIKE是(部分地)不区分大小写但PostgreSQL's LIKE是大小写敏感的。试试这个:

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

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

如果您发布到Heroku,并将您的开发环境切换到PostgreSQL,您将为自己节省一点点的悲伤和困惑。

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

+0

这照顾了它。 Def需要切换我的开发环境。谢谢你的帮助。 –

相关问题