首页 > 解决方案 > 如何允许单个用户使用“acts_as_votable”gem 在单个帖子上多次投票

问题描述

我已经安装了“acts_as_votable”gem,并且能够成功投票。当我从文档中添加代码以允许单个用户在单个帖子上多次投票时,它似乎不起作用。

def upvote
    @video = Video.find(params[:id])
    @user = User.first
    @video.upvote_by @user, :duplicate => true
    redirect_to :back
end

def downvote
    @video = Video.find(params[:id])
    @video.downvote_by User.first, :duplicate => true
    redirect_to :back
end

标签: ruby-on-rails

解决方案


Acts As Votable文档指出,您可以发送duplicate: truevote_by喜欢的人:

@video.vote_by voter: @user, duplicate: true

现在,查看源代码,似乎upvote_byvote_updocs的别名,并查看vote_up 定义

def vote_up(voter, options = {})
  self.vote_by voter: voter, vote: true, vote_scope: options[:vote_scope], vote_weight: options[:vote_weight]
end

它永远不会将duplication选项传递给vote_by.

因此,您的解决方案是vote_by改用。


推荐阅读