Ruby on rails 当我写find_by(整数)时会发生什么?

Ruby on rails 当我写find_by(整数)时会发生什么?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我曾经意外地写了一行代码: User.find_by(参数[:id]) 我的意思是 User.find_by(id:params[:id]) 但是代码没有抛出异常,它运行正常,并且总是返回数据库中的最后一个用户,这让我疯狂地发现哪里做错了。 那么,如果我们将一个整数传递给find_by,会发生什么呢?它为什么返回最后一个对象?正如您在api文档中看到的那样,find\u by只是一个简单的例子 def find_by(*args) where(*args).take end params[

我曾经意外地写了一行代码:

User.find_by(参数[:id])

我的意思是

User.find_by(id:params[:id])

但是代码没有抛出异常,它运行正常,并且总是返回数据库中的最后一个用户,这让我疯狂地发现哪里做错了。
那么,如果我们将一个整数传递给find_by,会发生什么呢?它为什么返回最后一个对象?

正如您在api文档中看到的那样,
find\u by
只是一个简单的例子

def find_by(*args)
  where(*args).take
end

params[:id]
实际上是一个字符串,因此您最终执行的是
where(“456”)
,它最终是sql的一个片段,类似于
where(456)
。除非传递0,否则数据库似乎会将其解释为匹配所有行。

我已经检查了API文档。但我不能真正回答这个问题。通过阅读“find_by”的文档,我认为返回“last”对象只是巧合,因为顺序无关紧要。如果我错了,请纠正我。在这里,整数是如何被视为“符合指定条件”的?对不起,如果这个问题是愚蠢的。我是noob,经过两周的阅读,我刚刚完成Hartl的教程!谢谢通过计算为布尔值的括号中的表达式查找_。但是如果您将find_by(true)或find_by(false)放在表中,您将得到表中的第一个条目,而不是最后一个条目。。。你在运行某种“railzoid”,如果有这样的东西存在的话?Facepalm!我应该被狠狠地打一巴掌!!我忘了用户是按创建的_排序的,所以最后添加的一个将首先出现!顺便说一句,如果你不介意的话,“railszoid”是什么?谷歌似乎表明这是一个人的昵称??