gpt4 book ai didi

ruby-on-rails - thumbs_up gem 的缓存问题

转载 作者:数据小太阳 更新时间:2023-10-29 08:10:10 28 4
gpt4 key购买 nike

github 上的 thumbs_up gem 没有解释如何在不同的模型中缓存投票。

这个 thumbs_up gem 连接到一个用户和一个微博,我想为微博表创建一个列来计算微博的投票数量。

我这样做是为了根据投票数量对微博进行排序。非常欢迎所有建议!

对于那些不熟悉这个 gem 的人,这里是:https://github.com/brady8/thumbs_up

最佳答案

我在一个项目中使用 Thumbs_up gem,在该项目中,用户撰写评论,其他用户对其进行投票。我遇到了同样的问题并提出了以下解决方案。它不优雅,但可以工作。我希望更有经验的人可以提供更好的解决方案。

在我的用户模型中我有:

class User < ActiveRecord::Base
acts_as_voter
has_karma(:chapters, :as => :user) # tracks "up votes" for all a user's chapters
has_many :reviews
end

我的评论模型有一个 :vote_cnt 属性和数据库列,每当投票时我都会更新它们:

class Review < ActiveRecord::Base
attr_accessible :heading, :body, :notes, :published, :user_id, :vote_cnt
acts_as_voteable
belongs_to :user

###############################################################################
# update the vote_cnt field in the database, for sorting and query purposes.
def update_vote_count
if self.vote_count != self.vote_cnt
self.vote_cnt = self.vote_count
self.save
end
end
end

在我的评论 Controller 中,我有一个操作来处​​理在我的评论 View 中点击投票链接:

  ################################################################
def vote_for
@review = Review.find(params[:id])
begin # try-rescue
current_user.vote_for(@review)
@review.update_vote_count
redirect_to review_path( @review ), :notice => "Successfully voted for this review."
rescue
redirect_to review_path( @chapter ), :notice => "Sorry, can't vote for a review twice, or you don't have voting rights."
end
end

现在,毕竟我终于可以检索 current_user 可访问的评论集,按评论的投票计数排序:

@reviews =@user.reviews.accessible_by(current_ability).order("vote_cnt DESC")

就像我说的,不优雅,但它有效。你可以像我构建我的评论那样构建你的微博,它应该适合你。希望这对您有所帮助。

关于ruby-on-rails - thumbs_up gem 的缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9562877/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com