Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails acts_as_votable:对同一对象有两种投票类型_Ruby On Rails_Acts As Votable - Fatal编程技术网

Ruby on rails acts_as_votable:对同一对象有两种投票类型

Ruby on rails acts_as_votable:对同一对象有两种投票类型,ruby-on-rails,acts-as-votable,Ruby On Rails,Acts As Votable,我在RubyonRails上实现了一个带有acts_as_votable gem的投票系统,用于喜欢帖子(upvote/downvote)。现在我想为帖子创建另一种投票类型。喜欢接受答案/不接受答案。有可能做到吗?这确实是可能的 尽管如此,您可能会丢失一些helper方法 Acts As Votable允许您使用作用域。所以你可以很容易地说 current_user.likes @post, voter_scope: "endorsement" 你还可以通过检查所有的投票来获得支持 @post

我在RubyonRails上实现了一个带有acts_as_votable gem的投票系统,用于喜欢帖子(upvote/downvote)。现在我想为帖子创建另一种投票类型。喜欢接受答案/不接受答案。有可能做到吗?

这确实是可能的

尽管如此,您可能会丢失一些helper方法

Acts As Votable允许您使用作用域。所以你可以很容易地说

current_user.likes @post, voter_scope: "endorsement"
你还可以通过检查所有的投票来获得支持

@post.find_votes_for vote_scope: "endorsement"
对于一个公认的答案也是如此

current_user.likes @post, voter_scope: "acceptance"
@post.find_votes_for vote_scope: "acceptance"
--小心使用带有“like”、“loke”和“vote”等词的作用域,因为这些是这个gems的某些用法中的方法名称,可能会让人非常困惑


因此,尽管文档中说每个选民模型只能有一张选票,但它真正的意思是每个模型只能有一张范围内的选票。

我尝试了投票范围,但现在计票不太顺利。我是这样做的:
performance\u indicator.improvement\u actions.sum(:cached\u votes\u total,vote\u scope:'upvote')
而且我现在不能按投票排序,我不会在你的范围中使用upvote这个词。我不会使用gem用作方法的术语此外,我并不奇怪你不能投票排序,因为你也提到你可能会失去一些功能。这不是宝石的设计方式,也不是任何投票宝石的设计方式