Rails:升级或降级计数器,丢失

时间:2012-02-21 07:57:55

标签: ruby-on-rails ruby ruby-on-rails-3 counter rating

我目前正在尝试创建一个具有向上或向下功能的评级计数器。我很困惑,如果我应该在我的帖子中添加一个列,以显示一个人喜欢这个帖子或创建一个单独的模型来显示评级计数器,但该计数器属于帖子。 Reddit甚至是Stackoverflow的东西。此外,我将如何开始这个评级计数器,无论哪种方法是正确的方法?谢谢大家。

编辑 - 目前仍停留在如何从此处继续

评分

class Rating < ActiveRecord::Base
  attr_accessible :post_id, :user_id, :rating
  has_many :post
  has_many :users

  validates :post_id, presence: true

end

评级控制器

class RatingController < ApplicationController

  def create
    @post = Post.find(params[:id])
    @post.rating_count = @post.rating_count + 1
  end
end

评级表

<%=form_tag @rating do %>
<%=submit_tag :Rating%>
<%end%>

1 个答案:

答案 0 :(得分:0)

您应该创建一个单独的模型,该模型将存储user_id,post_id和评级列。

class Post < ActiveRecord::Base
  has_many :ratings
end

class Rating < ActiveRecord::Base
  has_many :posts
  has_many :users
end

然后,您将能够获取相应帖子的所有评级,相应用户的帖子评级等等。

您甚至可以创建多态关系,为其他模型提供评级功能:

class Post < ActiveRecord::Base
  has_many :ratings, as: :rateable
end

class Rating < ActiveRecord::Base
  has_many :rateable, polymorphic: true
  has_many :users
end