如何在我的博客应用程序中设置 default_scope,以便索引按照模型中定义的算法对条目进行排序?
如果我要使用类似于 HackerNews 的公式进行排名算法,如下所示,我该如何在我的模型中定义它?
total_score = (votes_gained - 1) / (age_in_hours + 2)^1.5
votes_gained 变量依赖于 Active_Record_Reputation_System,在我看来是这样写的:
votes_gained = @post.reputation_value_for(:votes).to_i
最后,age_in_hours 非常简单
age_in_hours = (Time.now - @post.created_at)/1.hour
我如何使用这些数字来订购我的博客文章索引?我一直在试图弄清楚如何total_score
在模型中正确定义,以便我可以将其添加到默认范围default_scope order("total_score DESC")
或类似的东西中。直接替换没有奏效,我不确定如何“改写”公式的每个部分。
我应该如何定义total_score
?非常感谢您的洞察力!