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