J'ai mis en place un système de vote up/down qui se met à jour avec ajax dans mon application Ruby on Rails. Les boutons appellent la méthode create, un vote est inséré dans la base de données et la somme des votes est calculée.Correction mécanisme de vote
Cependant, à partir de maintenant, un utilisateur peut upvote ou downvote autant de fois qu'il le voudrait. Je veux que le vote soit comme ce que nous voyons ici sur StackOverflow, où un utilisateur peut seulement voter une fois ou plus, et les votes peuvent être annulés. Comment puis-je construire la logique pour cela?
En ce moment c'est une ressource indépendante qui a à la fois un ID_vidéo et un id_utilisateur –
Si les vidéos sont la seule chose que vous allez évaluer, alors c'est une bonne approche. Dans ce cas, vous pouvez probablement juste faire @previous_rating = Rating.where (: video_id => params [: video_id],: user_id => current_user.id) .first' et vérifier '@ previous_rating.nil?' Pour vérifier si l'utilisateur a déjà évalué cette vidéo. Si c'est le cas, vérifiez la note entrante et changez-la en version upvote/downvote si elle est différente, ou revenez si c'est la même chose. –
Cela a du sens. Pourquoi devez-vous faire '.first' à la fin de l'appel' where'? L'utilisateur ne devrait-il pas avoir un seul vote de toute façon? –