Ruby on rails 铁路及;Heroku-按小写用户名查找用户

Ruby on rails 铁路及;Heroku-按小写用户名查找用户,ruby-on-rails,heroku,Ruby On Rails,Heroku,在rails开发环境中,我通过路由中的小写用户名找到用户 例如: @user = User.find_by_username(params[:id].downcase) 这段代码在开发中运行得非常好,但是当这段代码在生产中运行(Heroku)时,我得到了 ActionView::Template::Error(nil:NilClass的未定义方法“username”): 这个问题有解决办法吗?在我使用的最后 User.where('lower(username) = ?', params[:i

在rails开发环境中,我通过路由中的小写用户名找到用户

例如:

@user = User.find_by_username(params[:id].downcase)
这段代码在开发中运行得非常好,但是当这段代码在生产中运行(Heroku)时,我得到了

ActionView::Template::Error(nil:NilClass的未定义方法“username”):


这个问题有解决办法吗?

在我使用的最后

User.where('lower(username) = ?', params[:id]).first

很抱歉这样的困惑和不确定性:)

“这个问题有解决办法吗?”-这里有一个问题。你知道问题是什么吗?我现在觉得特别无聊,所以我可以问一些暗示性的问题,直到你把一切弄明白为止。:)找不到该用户,因此您确定它位于生产服务器上的数据库中吗?您是否尝试过:
user.where(“name=?”,params[:id].downcase)
?@AlejandroMontilla是的,我试过了,这似乎是由区分大小写的参数引起的。如果我在开发中通过“localhost:3000/Username”,它将找到用户,即使它是“Username”或“Username”,我猜find_by_Username(params[:id].downcase)在postgres中不起作用?@Hipady是你的params[:id]实际上是用户名吗?还是身份证?这将取决于你是如何提交的。我假设如果您试图通过_用户名查找_,您可能会有类似于通过_用户名查找_的内容(params[:username]),而不是使用params[:id]。显示更多的代码可能会对我们有更多帮助。对你有好处!不要忘记在
LOWER(username)
上添加索引。