我目前正在尝试创建一个具有向上或向下功能的评级计数器。我很困惑,如果我应该在我的帖子中添加一个列,以显示一个人喜欢这个帖子或创建一个单独的模型来显示评级计数器,但该计数器属于帖子。 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%>
答案 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