GOOGLE ADS

среда, 13 апреля 2022 г.

Rails 3, запрос Active Record возвращает объект ActiveRecord::Relation вместо объектов

Я чувствую, что это простая проблема, которая у меня возникла из-за моего непонимания нового интерфейса запросов ActiveRecord, но возьмем этот пример:

>> Category.first.recipes
=> [... ] # array of recipes

Однако:

>> Category.where(:id => 1).recipes
=> NoMethodError: undefined method `recipes' for #<ActiveRecord::Relation:0x000001033dc9e0>

Что тут происходит? почему мой whereметод возвращает ActiveRecord::Relationобъект? как я могу получить объекты из запроса здесь?


Решение проблемы

Это на самом деле намеренно.

Category.where(:id => 1)
# Is Equivalent to Category.all(:conditions => {:id => 1}})
Category.where(:id => 1).first
# Is equivalent of Category.first(:conditions => {:id => 1}})

Объекты извлекаются только при вызове специальных методов, таких как first, each и т. д. Это называется отложенной загрузкой, которая отлично подходит, когда вы хотите кэшировать свои представления. Подробнее о том, почему, читайте здесь.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...