Проверки для системы голосования для блога - PullRequest
0 голосов
/ 31 августа 2018

Я создаю сайт для парня. Я вообще не опытный разработчик, но он достаточно любезен, чтобы дать мне шанс. Я хочу создать систему голосования без пользователей, в которой людям не нужно создавать учетную запись и входить в систему, чтобы голосовать и комментировать статьи в блогах на своем канале RSS. Я пытаюсь создать проверки, чтобы предотвратить многократное голосование одного и того же человека. Не знаю, как бы я поступил так. Любые идеи приветствуются!

Вот мой контроллер голосования:

def upvote
    @voting = HomeBlog.find(params[:home_blog_id])
    @voting.votings.build( :upvote => true, :downvote => false)
    @voting.save!
    redirect_to request.referrer, notice: "Thanks for the vote!"
  end

  def downvote
    @voting = HomeBlog.find(params[:home_blog_id])
    @voting.votings.build( :downvote => true, :upvote => false)
    @voting.save!
    redirect_to request.referrer, notice: "Thanks for the vote!"
  end

Просмотр страницы:

p id="notice"><%= notice %></p>

<div id="blog-post-show">
  <div id="voting-count">
    <%= link_to(home_blog_upvote_path(@home_blog.id), {method: :post}, html_options = {})do %>
    <%= @home_blog.votings.select { |v| v.upvote == true}.count %><%= image_tag "if_icon-ios7-arrow-up_211690.png" %>
    <% end %><br>
    <%= link_to(home_blog_downvote_path(@home_blog.id), {method: :post}, id: "downvote") do %>
    <%= @home_blog.votings.select { |v| v.downvote == true}.count %><%= image_tag "if_down_1303877.png" %>
    <% end %>
  </div>
  <h3 id="blog-post-show-title">
    <b><%= @home_blog.name %> | <%= @home_blog.created_at.to_date %></b>
  </h3>
  <%= @home_blog.entry.html_safe %>

</div>

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете выбрать один из трех возможных вариантов решения этой проблемы:

  • Сохраните cookie в браузерах пользователей. Но проблема в том, что технически квалифицированные пользователи могут преодолеть эту защиту. Они могут переключаться на разные браузеры или удалять определенные cookie-файлы в своих браузерах и снова голосовать.

  • Хранить голоса в базе данных с пользователями IPs. Но проблема с этим решением заключается в том, что пользователи и IP-адреса не отображаются один на один. Многие люди имеют один и тот же IP.

  • Разрешить только зарегистрированным пользователям голосовать и сохранять флаг в database. Что, на мой взгляд, является лучшим решением, если вы хотите предотвратить многократное голосование одного и того же человека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...