User.find_by(["名字LIKE?"不在heroku上工作但在开发服务器上工作

时间:2016-09-20 14:35:59

标签: ruby-on-rails heroku

什么会导致它在开发中起作用,而不是生产?

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

它在开发服务器上找到名为"Dan Doughty"的用户,但在Heroku上的Production中找不到相同的用户。在这两种环境中都有一个具有该名称的用户。

2 个答案:

答案 0 :(得分:2)

请注意,LIKE区分大小写,并且它将与确切的字符串

匹配

所以要么将名字双面打包

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

或者去ILIKE

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

答案 1 :(得分:1)

我想我只是想用更可靠的东西。我选择使用Arel来解决这个问题。

不幸的是,他们只是有点埋葬而且有点无证。因此传统观点认为Rails不会对不区分大小写的发现做出反应。但事实上确实如此:

不区分大小写:

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