Как использовать действие 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?