2016-09-20 53 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

相关问题