Как использовать действие act_as_votable, как выполнить действие после сохранения голоса?

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

Всякий раз, когда пользователь голосует, событие голосования регистрируется с помощью Mixpanel, службы регистрации событий. Я хотел бы убедиться, что событие голосования отправляется только тогда, когда голос сохранен. То есть, если пользователь уже проголосовал, событие не должно снова регистрироваться.

При условии acts_as_votable такое драгоценный камень, какова лучшая практика в этом сценарии? Должен ли я открыть класс или разветвлять драгоценный камень?

1 ответ

Решение

Если вы считаете, что вам нужно расширить функциональность acts_as_votable лучшей практикой было бы вновь открыть класс (monkey-patch). Это будет более ремонтопригодным в долгосрочной перспективе.

Но лучшая практика - держаться подальше от acts_as_votable и измените свой регистрационный код. acts_as_votable имеет vote_registered? метод, который сообщает вам, был ли сохранен голос, чтобы ваш метод мог выглядеть так:

post.liked_by current_user
Mixpanel.submit 'new vote' if post.vote_registered?
Другие вопросы по тегам