Ruby on rails 正确或错误的后评价系统

Ruby on rails 正确或错误的后评价系统,ruby-on-rails,Ruby On Rails,我们希望在Rails应用程序中实现一个系统,允许用户对帖子进行正确或错误的评级。当用户点击True时,这将为该帖子的True计数增加一票。我们想要设置这个系统,这样如果用户已经点击了True,但是想要切换到False,他们可以点击False,投票将立即转移到客户端的False列计数 我们应该如何着手实施这样的事情 我们目前在micropost.rb中有这个 belongs_to :user belongs_to :target_user, :class_name=>"User", :f

我们希望在Rails应用程序中实现一个系统,允许用户对帖子进行正确或错误的评级。当用户点击True时,这将为该帖子的True计数增加一票。我们想要设置这个系统,这样如果用户已经点击了True,但是想要切换到False,他们可以点击False,投票将立即转移到客户端的False列计数

我们应该如何着手实施这样的事情

我们目前在micropost.rb中有这个

belongs_to :user
  belongs_to :target_user, :class_name=>"User", :foreign_key=>"belongs_to_id" 
  has_many :ratings

def rateable_by_user?(user)
  self.ratings.where(:rater_id=>user.id).empty?
end
这是我们目前的评级.rb

class Rating < ActiveRecord::Base
    attr_accessible :micropost_id, :owner_id, :rater_id, :rating
    belongs_to :micropost
    belongs_to :target_user, :class_name=>"User", :foreign_key=>"owner_id"
    belongs_to :user, :class_name=>"User", :foreign_key=>"rater_id"
    scope :trues, where("rating = ?", "true")
    scope :falses, where("rating = ?", "false")
end
等级“用户,:外部密钥=>“所有者id”
属于:user,:class\u name=>“user”,:foreign\u key=>“rater\u id”
范围:trues,其中(“评级=?”,“真实”)
范围:falses,其中(“评级=?”,“false”)
结束

我认为你的想法是对的。但是,我不知道为什么用户模型有两个属性(我知道有两个外键,我只是不明白为什么)。我认为这实际上是为了创建一个新的评级对象,如果用户没有一个用于该帖子的评级对象,则根据他们单击的内容设置正确的值。如果它们确实具有现有评级,只需交换评级值即可

 def switch_value
   self.rating = !self.rating
 end

如果这不是你想要的,你介意描述一下你遇到问题的具体方面吗?

我认为你的想法是对的。但是,我不知道为什么用户模型有两个属性(我知道有两个外键,我只是不明白为什么)。我认为这实际上是为了创建一个新的评级对象,如果用户没有一个用于该帖子的评级对象,则根据他们单击的内容设置正确的值。如果它们确实具有现有评级,只需交换评级值即可

 def switch_value
   self.rating = !self.rating
 end

如果这不是您想要的,您是否介意描述您遇到问题的特定方面?

我认为我们正在尝试在AJAX风格的实现中获得更多。其中,单击False会将用户的评级设置为False,但单击True只会将其切换为True。这对我们来说几乎很难解释,因为这个问题看起来很简单,但实际上非常复杂。我认为我们试图在AJAX风格的实现中获得更多。其中,单击False会将用户的评级设置为False,但单击True只会将其切换为True。这对我们来说几乎很难解释,因为这个问题看起来很简单,但实际上非常复杂。