Я не знаю точного ответа, но я могу помочь вам отладить ...
Когда вы делаете
pmf = current_user.practices_users.inspect
, тогда Rails загружает весь набор practices_users
(для current_user) из базы данных, и когда вы вызываете last
чуть позже, он вызывает метод last
для объекта типа Array
.
Когда вы делаете
current_user.practices_users.last
, не сделав ваш вызов pmf, весь набор practices_users
не был загружен из базы данных в массив, и Rails не собирается загружать весь набор, потому что все, что вам нужно, это последний. Было бы бесполезно загружать массив элементов, когда все, что нужно для загрузки, является последним. Таким образом, он будет генерировать SQL, который загружает только одну строку из базы данных.
В такой ситуации вам нужно просмотреть консоль или журнал разработки, чтобы увидеть, что именно генерирует SQL Rails и почему этот SQL не возвращает никакого значения. Тогда станет ясно, что происходит.