J'essaie de mettre en place un système de vote où les votes sont limités par les électeurs adresse_ip.Un vote par adresse IP
J'ai un modèle de message qui a beaucoup de_votes et les votes appartiennent au modèle de poste.
Ma question est de savoir comment et où je définis le "current_user" et comment puis-je l'implémenter dans la vue.
Actuellement je crée votes comme ceci:
<%= link_to(post_votes_path(post), :method => 'post') do %>
<%= song.votes.size %>
fonctionne très bien, sauf tout le monde peut voter et je veux arrêter cela. S'il vous plaît je ne cherche pas un bijou que j'essaie juste d'apprendre cette fonctionnalité à partir de zéro.
Vive.
Voici mon Messages code du contrôleur:
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to root_url, notice: 'Post was successfully created.' }
else
format.html { render action: "new" }
end
end
end
et le code contrôleur de vote pour créer une action:
def create
@post = Post.find(params[:post_id])
@vote = @post.votes.create
respond_to do |format|
format.html { redirect_to root_url }
#format.js
end
end
Pouvez-vous également indiquer comment sont stockés vos utilisateurs? – AnkitG
Current Je n'ai pas de table d'utilisateurs, je pense à ajouter un vot_id à la table des votes? – Joshua
Vous devez ajouter une colonne 'voter_ip' dans votre table Vote, et y mettre l'adresse IP de l'électeur: '@ post.votes.create (voter_ip: request.remote_ip)' (la variable 'request' n'est disponible que dans Contrôleurs , quand vous recevez une demande) Et puis faites comme @Gene dit, ajoutez un 'validates: électeur_d'électeur, unicité: vrai' dans votre modèle de vote. – MrYoshiji