Проблема плагина направляющих законов-поскольку-читаемый

1 ответ

Следующее будет работать

<%= Post.find_unread_by(current_user).size %>

или

<%= Post.find_unread_by(current_user).length %>

Однако при проверке development.log, необходимо видеть, что это получает непрочитанное количество

  1. Получение всех сообщений
  2. Получение всех сообщений, прочитанных пользователем
  3. Удаление всех из 2. от 1. в рубине

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

Лучший путь состоял бы в том, чтобы получить сообщения, прочитанные текущим пользователем, и затем использовать ActiveRecord:: Вычисления для получения количества, не получая все сообщения в базе данных

Post.count(:conditions => [ "id NOT IN (?)", Post.find_read_by(current_user)])

Это должно войти в Вашу модель Post для применения лучших методов не наличия средств поиска в представлении или контроллера

Post.rb

def self.unread_post_count_for_user(user)
  count(:conditions => [ "id NOT IN (?)", Post.find_read_by(user)])
end

Затем Ваше представление просто будет

<%= Post.unread_post_count_for_user(current-user) %>
11
ответ дан 4 December 2019 в 20:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: