Я надеюсь, что смогу объяснить это ясно.
Пользователь имеет_много уведомлений и имеет_много фильмов через уведомления. Фильм имеет_много трейлеров.
Уведомления имеют 3 столбца: user_id, movie_id и веб-сайт.
На trailers#index я отображаю @trailers, и каждый @trailer отображает 3 x ajax уведомления_формы (каждая форма представляет собой всего одну кнопку, по одной для каждой опции «веб-сайта». Когда пользователь нажимает эту кнопку, отправляется запрос ajax для создания новая запись уведомления)
- Я отслеживаю, какие кнопки были нажаты (просматривая, существует ли уведомление для этого пользователя/фильма)
Меня беспокоит то, что, поскольку я только предварительно загружаю @trailers, я в настоящее время делаю 3 новых вызова БД на каждой итерации трейлера.
_notification_form.html.erb (вызывается 3 раза для каждого трейлера)
<% if trailer.movie.tracked?(current_user, "netflix") %>
## do some css stuff on the button to show notification already set
фильм.рб:
def tracked?(user, website)
user.notifications.where(movie_id: self.id, website: website).first
end
Поэтому каждый раз, когда рендерится частичный трейлер, я делаю 3 вызова БД. Как правильно поступить в этой ситуации?