2011-08-20 119 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需要切換我的開發環境。謝謝你的幫助。 –

相關問題