обратные вызовы rails не срабатывают при отслеживании событий ahoy

#ruby-on-rails #mongoid #tracking #ahoy

#ruby-on-rails #mongoid #отслеживание #ahoy

Вопрос:

Я использую Ahoy с хранилищем Mongoid. Любой совет очень ценится!

Моя проблема в том, что для повышения эффективности каждый раз, когда создается новое событие ahoy, я хочу обновить количество элементов, чтобы я мог выполнять такие вещи, как сортировка по просмотрам страниц. Мой план состоял в том, чтобы использовать обратный вызов mongoid, такой как after_create, для обновления счетчика каждый раз, когда генерируется событие. что-то вроде:

 class Ahoy::Event

  after_create :update_pageviews

  def update_pageviews
    case self.name
    when 'Viewed post'
      p = Monologue::Post.find(properties[:post])
      p.pageviews = p.pageviews   1
      p.save
    end
  end
  

однако обратный вызов, похоже, даже не запускается.

  1. Есть ли лучший способ справиться с этим? Для меня слишком медленное выполнение подсчетов, поэтому мне нужно где-то его сохранить.
  2. Почему обратный вызов не запускается?

Ответ №1:

Обновление для всех, кто сталкивается с этим. Проблема была связана с использованием Ahoy типа BSON::Binary вместо (того, что Mongoid использует в настоящее время) BSON::ObjectId . Пришлось преобразовать мои идентификаторы, чтобы mongodb вел себя счастливо.