我正在阅读this Stack Overflow question,并想知道在Ruby on Rails应用程序中存储数据的流行度值的常见做法是什么?
我的想法是拥有2个模型,一个常规模型和一个流行模型,其中包含来自常规模型的数据,按< strong> 热门公式 。一个cronjob将在某个特定的时间间隔填充后一个模型。
有什么想法吗?
答案 0 :(得分:0)
这取决于细节,但我认为您可以将流行度信息存储为模型中的列。例如,如果您有按要求排序的问题,则可以运行迁移AddPopularityToQuestions popularity:float
。
然后,您可以按设定的时间间隔(例如,使用Whenever)运行脚本,以更新每个问题的受欢迎程度值。但是,如果没有那么多活动,那么每当发生会改变它的事情时更新问题的流行度可能更有意义。例如,如果流行度主要取决于投票,则可以在有新投票时更新问题的受欢迎程度。
答案 1 :(得分:0)
使用一个rake任务更新热门程度并使用heroku scheduler运行它。
答案 2 :(得分:0)
我认为人气是统计的。例如,过去7天内的视图等。您可能想要使用的测量值可能会发生变化,甚至允许用户选择要使用的公式。
在这种情况下,您需要一个属于常规模型的统计模型,您可以加入表格以获得您感兴趣的流行度衡量。
答案 3 :(得分:0)
我会使用模型中的popular_score字段和返回热门项目的范围,例如:
def popular(count = 10)
order('popularity_score DESC').limit(count)
end
取决于评分算法,我可以添加额外的模型来保存统计数据
class model_stats
attr_accessor :statistic, :value
belongs_to :model
end
这可能包含视图,up_votes或股票等统计信息,这些信息将使用您首选的流行度算法定期汇总,并将结果保存到popular_score中。 (作为由cron或类似人员启动的rake任务管理)
我会确保popular_score是一个索引字段!