2016-09-20 51 views
0

什麼會導致這種情況的發展而努力,但不生產?User.find_by([「名字怎麼樣?」不工作在Heroku但開發服務器上工作

User.find_by(["name LIKE ?", "DAN DOUGHTY"])

,並找到了用戶在開發服務器上的名稱爲"Dan Doughty",但在Heroku上沒有在Production上找到相同的用戶。在這兩種環境中都有一個用戶名稱爲

+0

另外...這工作了一個星期,今天突然停止工作。 – Doughtz

+0

你在使用postgres嗎?另請注意區分大小寫,可能需要'ILIKE' – Vasfed

回答

2

注意LIKE是大小寫敏感的,它會

所以確切的字符串匹配任何一種downcase兩側名稱

User.find_by(["lower(name) LIKE ?", "DAN DOUGHTY".downcase]) 

或者去找ILIKE

User.find_by(["name ILIKE ?", "DAN DOUGHTY"]) 
+0

這是一個很好的解決方案也 – Doughtz

1

我想我只是要使用更可靠的東西。使用Arel來解決這個問題。

他們不幸只是有點埋沒,有點無證。傳統的看法是,Rails不會做大小寫不敏感的發現。但實際上它的作用:

不區分大小寫:

t = User.arel_table 
User.find_by(t[:name].matches('DAN DOUGHTY')) 
+0

當我在開發中使用SQLite,然後使用postgresql數據庫部署到heroku時,遇到同樣的問題。另一個原因,使您的開發環境儘可能接近生產 – mrstebo

+0

,似乎到底是什麼問題 – Doughtz

相關問題