我正在检查用户是否对某个帖子投了票,然后更改了向上和向下箭头的样式。 activerecord-reputation-system
gem暂时没有更新,我找到的每个例子都使用过时的代码或者需要分别跟踪“向上”投票和“向下”投票。我更喜欢使用:post_votes
并检查该参数的值。
posts_controller.rb
@voted_items = Post.evaluated_by(:post_votes, current_user)
index.html.erb
<% if current_user && @voted_items.include?(post) %>
# display active up or down arrows
<% end %>
如何获得@voted_items
对象中相关记录的值?
编辑:我注意到:value没有内置范围。也许手动添加一个会让我查询一个特定的值吗?
答案 0 :(得分:0)
现在我在模型上想出了这个方法def:
def evaluation_value(user, comment)
if @up_voted = ReputationSystem::Evaluation.where(:reputation_name => "comment_votes",
:value => "1.0", :source_id => user.id, :source_type => user.class.name,
:target_id => comment.id, :target_type => comment.class.name).exists?
"upvoted"
elsif @down_voted = ReputationSystem::Evaluation.where(:reputation_name => "comment_votes",
:value => "-1.0", :source_id => user.id, :source_type => user.class.name,
:target_id => comment.id, :target_type => comment.class.name).exists?
"downvoted"
else
nil
end
end
它并不理想,因为它需要对值和其他细节进行硬编码,但它现在可以使用,直到更新gem以允许检查单个值。
这样我可以运行comment.evaluation_for(current_user, comment) == "upvoted"
或downvoted。