如何通过单独表格中的总和来订购我的参赛作品?

我想知道如何在PostController #index中订购post,以便在单独的表格中按列总数显示。 这是我如何设置它。

class Post < ActiveRecord::Base :has_many :votes end 

 Class Vote < ActiveRecord::Base :belongs_to :post end 

我可以向某个post投票或者投票。 我知道有可能更好的方法来做我目前正在做的事情,但是根据我目前的情况寻找解决方案。 当用户对post进行投票时,值1将通过隐藏字段传递到投票表。 当用户对post进行投票时,将值-1传递给同一列(名称投票)。

我想知道如何按照特定post的投票列(在投票表中)的总和显示我的post。

另一种说法是,如果一个特定的post的净投票金额为5,我希望它出现在一个净投票金额为4的post之上。

我假设我需要以某种方式影响PostController #index动作。 但不知道该怎么做。

试试这个:

 @posts = Post.all(:select => "posts.*, SUM(votes.vote) as vote_total", :joins => "LEFT JOIN votes AS votes ON votes.post_id = posts.id", :group => "posts.id", :order => "vote_total DESC") @posts.each do |post| post.vote_total end 

您可以使用以下内容。

 class Post < ActiveRecord::Base :has_many :votes named_scope :post_list, :select=>" posts.id, posts.title,posts.description, votes.total", :joins => :votes, "LEFT JOIN votes ON posts.id = votes.post_id" :order => "votes.total DESC" end