Вам нужно либо вести список пользователей, которые голосуют по определенной теме / сообщению, либо вам нужно хранить список, прикрепленный к каждому пользователю, содержащий сообщения, за которые проголосовал пользователь. Храните ли вы информацию вместе с сообщениями или пользователями - это ваш выбор и, вероятно, зависит от требований вашего приложения.
При отображении страницы, содержащей кнопку голосования, вы должны проверить, проголосовал ли current_user
или нет. И не показывать кнопку, если голос уже подан. В целях безопасности вы можете также проверить, голосовал ли пользователь в показанном выше коде, чтобы предотвратить голосование без использования кнопки.
Если вы также позволяете людям, которые не вошли в систему, голосовать, вам нужно сохранить их IP-адрес или что-то в этом роде.