不应该Rails find_by_方法返回一个空数组而不是nil?

Arc*_*lye 6 null activerecord ruby-on-rails

不应该Rails find_by_方法返回一个空数组而不是nil?

没有与find_by_条件匹配的记录是正常的,但返回nil没有意义.因为在我看来,错误是由合理的代码引起的,例如:

<% for thing in @thing_that_might_be_an_array_or_might_be_nil do %>
Run Code Online (Sandbox Code Playgroud)

由于find_by_总是返回一个数组,即使只有1条记录,如果有0条记录,它也应该返回一个数组.然后是所有这些

<% @thing.each
Run Code Online (Sandbox Code Playgroud)

<% for thing in @thing
Run Code Online (Sandbox Code Playgroud)

在我们的观点中,我们会悄悄地过去,而不是造成"我们很抱歉,但出了点问题." (或者我错过了什么?目前解决这个问题的最佳做法是什么?)

the*_*eIV 6

find_by_ 用于查找一条记录,第一条符合您条件的记录.

find_all_by_ 用于查找符合条件的一组记录,一个数组.

所以,是的,我认为find_by_返回nil 是完全正常的,而不是空数组,当它找不到任何东西时,因为你只需要一件事.