我正在使用Active Record Reputation System gem,并允许用户对特定列表进行投票或投票。我目前能够检查用户是否通过以下方式对列表进行了投票:
if current_user && listing.has_evaluation?(:votes, current_user)
这告诉我使用用户是否已投票,但我需要类似的逻辑来告诉我他们是否为该特定列表投票或投票。有什么想法吗?相关代码如下:
在列表模型中:
has_reputation :votes, source: :user, aggregated_by: :sum
在列表控制器中
def vote
value = params[:type] == "up" ? 1 : -1
listing = Listing.find(params[:id])
listing.add_or_update_evaluation(:votes, value, current_user)
redirect_to :back, notice: "Thank you for voting"
end
答案 0 :(得分:0)
确定价值的目标是,我可以显示当前用户是否喜欢某个特定页面。 @ thing.has_evaluation?(::reputation_name,:source)无法正常工作,因为即使用户喜欢,页面也显示为“喜欢”,然后不喜欢。
如果有人遇到此问题,您可以通过调用方法delete_evaluation删除评估作为源级别,然后从系统中删除用户以前的喜欢/不喜欢/投票等,就像他们从未投票一样。
如果您有二元投票过程,则主要有帮助