Проблема в том, что find_by_name
и where
не возвращают одно и то же. find_by_name
найдет первого пользователя, который соответствует вашему запросу. where
вернет коллекцию пользователей, соответствующих вашему запросу.
В вашем первом примере результатом является один объект User, поэтому a.name
дает вам "castiel"
.
a=User.find_by_name 'castiel'
# 'a' will be something like #<User id:..., name: "castiel"...>
a.name #output: castiel
Однако во втором примере результатом является массив пользовательских объектов. Если вы позвоните a.name
, он вернет название модели, которой он владеет: User
.
a=User.where "name like 'c%'"
# 'a' might be something like [#<User id:..., name: "castiel"...>]
a.name #output: User
Даже если использование where
, вероятно, вернет вам только один результат, оно все равно будет заключено в массив.