2013-09-20 2 views
-2

Я называю рельсы find метод много во время моего просмотра. Является ли это общепринятой хорошей практикой? Я склоняюсь к нет, но почему? find каждый раз вызывает базу данных? Он кэширует результат в любом месте? Я просмотрел документы ruby ​​/ rails на find, но они не указали, действительно ли он вызывал вызов в базу данных каждый раз или нет.осветляющие направляющие найти метод

+0

Это не очень хороший вопрос. Положите простой пример, чтобы сообщить нам, что заставило вас смутить ... не весь код ... –

+0

Я взял код, я ни о чем не путаюсь, m задает конкретные вопросы о методе .find(). 1. Можете ли вы включить его в представление (это хорошая практика). 2. Делает ли он вызов в базу данных каждый раз? – jamesdlivesinatree

+0

код был только там, чтобы показать, где я его использовал (вид), и сколько раз мне приходилось его использовать (много), который поддерживает вопросы, которые я задаю, вместо того, чтобы задавать вопрос о коде @ArupRakshit – jamesdlivesinatree

ответ

1

Нет, это не очень хорошая идея, чтобы позвонить find с точки зрения. Задача контроллера - загрузить и собрать все данные, которые будут нужны для представления, и передать его в представление для представления пользователю.

Повторные вызовы find для одного и того же объекта должны быть кэшированы Rails, поэтому он не будет попадать в базу данных каждый раз, если аргументы или другие параметры не были разными.

0

Реально простым способом проверить это будет запуск терминала и запуск rails c. В консоли запустите код, который возвращает tplangroup, и поиграйте с ним в консоли. Вы должны иметь возможность видеть вызов базы данных в консоли разработчика.

Основываясь на моем опыте (не на компьютере с рельсами прямо сейчас), я думаю, что он попал бы в базу данных в каждом из этих вызовов, если только вы не создали tplangroup, используя .includes(:tplan) для активной загрузки.

Надеется, что это помогает

Смежные вопросы