使用计算和类方法排序列

时间:2012-08-15 09:27:42

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

我正在构建一个允许用户发布的应用。这些帖子可以被投票和投票。每个帖子记录都会跟踪upvotes:integerdownvotes:integer。我希望能够订购总票数最多的记录(换句话说:upvotes-downvotes)。我完全不知道怎么做,因为我不太明白Class方法如何与它们被调用的对象进行交互。这是我的尝试:

我的控制器:

def index
    @posts = Post.find(:all).most_votes.order(vote_difference)
end

我的Post.rb模型:

def self.most_votes
   vote_difference = (upvotes-downvotes)
end

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

事实证明,您实际上可以将计算直接插入.order()值:

@posts = Post.find(:all).order('upvotes + downvotes')