ruby-on-rails - 如何将行为设置为不需要用户登录的投票?

标签 ruby-on-rails voting

我试图让用户无需登录/注册即可对线程进行投票,以提高用户参与度。我该怎么做呢?目前,我目前的流程是将投票与访问者的 IP 地址联系起来,以防止多次投票,但另一个问题是 request.remote_ip 没有为我提供正确的 IP(我在学校网络上)。有什么建议么?非常感谢!

线程 Controller 中的投票操作

def upvote
 @thread = Thread.find(params[:id])
 current_user.up_vote(@thread)
 flash[:message] = 'Thanks for voting!'
 respond_to do |format|
 format.html { redirect_to :back }
  format.js
  end

投票路线
resources :threads do
member do
  post :upvote
  post :unvote
end

最佳答案

我写的行为是可投票的。

这个 gem 背后的整个想法是允许任何东西对任何东西进行投票(因此不会像您所描述的情况那样对用户有硬性依赖)。

如果您不想使用 IP 地址来存储选票,那么也许您可以使用与每个 session 相关联的唯一 ID。这对投票欺诈是开放的,但它允许任何人在没有账户的情况下投票。

你可以做类似的事情

session[:voting_id] ||= create_unique_voting_id
voter = VotingSession.find_or_create_by_unique_voting_id(session[:voting_id])
voter.likes @thread

您需要设置一个 VotingSession 模型来充当 act_as_voter 并维护一个唯一的投票 id,但这应该很容易使用 rails。

希望这可以帮助

关于ruby-on-rails - 如何将行为设置为不需要用户登录的投票?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7987378/

相关文章:

php - 使用 SQL 的投票/排名逻辑

symfony1 - Symfony框架投票系统

ruby-on-rails - 如何对 Rails 3 应用程序的测试套件进行基准测试

ruby-on-rails - 如何为 rails 表单 text_field 定义额外的方法

ruby-on-rails - 本地服务器上的一个 'run'如何从其源代码下载rails项目

javascript - 使用 deepstream.io 进行实时投票

javascript - 无法让 Bootstrap 模态与 Rails 4 一起使用

ruby-on-rails - db :reset 后 Postgres 函数未保留

投票数据库设计

javascript - 使用 Uservoice 上传图片