Как я могу считать view_number из модели, отфильтрованной по сеансу? - PullRequest
0 голосов
/ 30 октября 2019

Я кодировал функцию о view_number (количество просмотров) в блоге.

Это работает, когда я перезагружаю страницу, однако я хочу подсчитать view_number на основе сеанса. Может быть, это как Использование # 8 в этом драгоценном камне

Есть какое-нибудь решение для этого? Спасибо, что прочитали

class Home::UpdateBlogViewNumberWorker
  include Sidekiq::Worker
  sidekiq_options queue: 'blogs'

  def perform(*args)
    blog_id = args.first
    viewer = Blog.find_by_id(blog_id)

    if viewer.present?
      view_number = viewer.view_number.to_i + 1
      viewer.update_attribute(:view_number, view_number)
    end
  end
end

и мой контроллер

class Home::BlogsController < Home::BaseController
  #...
  def show
    update_blog_view_number
  end

  private

  def update_blog_view_number
    Home::UpdateBlogViewNumberWorker.perform_async(@blog.id)
  end

end

1 Ответ

0 голосов
/ 30 октября 2019

IDK, что означает модель вашего блога, если возвращает пользователей, или возвращает сообщения, или возвращает блог, как, например, мультитенантное приложение блога. Я предполагаю, что возвращает сообщения.

Если вы хотите контролировать, кто просматривает что-то, например, гем, на который вы отправили ссылку, вам понадобится таблица для соответствия между session_hash, ip или user_id и blog_id. Затем вам следует обратиться к этой таблице, если совпадение существует для этого поста, если оно существует, ничего не делать, но если его не существует, счетчик увеличится.

Подумайте о лучшей масштабируемости, добавьте индекс в таблицу соответствий. по вашему идентификатору пользователя (session, ip, id) и другому в blog_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...