2012-09-17 46 views
1

除了通常的:id:timestamp列以外,我的应用程序还有一个用户模型,其中有两个整数列:votes:badges如何使用多列输入设置默认范围订单

目前,用户的默认范围是:

default_scope order: 'users.created_at DESC' 

如何更新默认范围由组成一个排名算法来排序:票:徽章?

我的算法是:

ranking = 2 * votes + badges 

什么是做到这一点的最好方法是什么?

我希望能够创建模型的方法如下,但这不起作用

def ranking 
    2 * self.votes + self.badges 
end 

我需要在我的数据库中创建一个ranking列? 非常感谢您的帮助!

回答

3

你应该能够编写

default_scope order("votes * 2 + badges") 
+1

感谢@cdesrosiers。我会如何去测试更复杂的博客文章公式,比如'(blog.votes - 1)/(Time.now - blog.created_at)/1.hour +2)^ 1.5'。有没有一种方法可以先定义公式,然后在范围中使用它? – umezo