首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails设计问题--“现在很热”

Rails设计问题--“现在很热”
EN

Stack Overflow用户
提问于 2011-09-24 06:59:59
回答 1查看 57关注 0票数 0

我的网站上有多个模特。有建议和项目,也有交易。

我创建了一个模板,它显示了现在什么是热的。我想要能够应用到上述所有3种模式,并想知道最好的方式来处理它。

显然,我可以在每个模型上添加"hotness_score“,然后运行cron,每小时更新他们的热评分(通过我自己的算法)。然而,不方便的是,如果我想在我的网站上显示十大最热门的东西,我可能需要从每一个最热门的对象中提取前十位,然后在内存中对它们进行排序。(尽管我可以缓存它们,但听起来并不令人愉快)。

我还考虑过创建一个新模型,又名Hotness,它具有以下属性:

  1. Type
  2. object_id
  3. hotness_score
  4. last_updated

这样做的好处是,我只需查询Hotness order_by 'hotness_score DESC‘..limit( 10 ),就可以得到所有数据中的前10位。

你认为这是一个很好的实现吗?你觉得这个有什么问题吗?

有人能提出一些更好的方法来解决这个问题吗?我欢迎所有的建议。

EN

回答 1

Stack Overflow用户

发布于 2011-09-24 07:37:30

是的,我认为你说的是一个多态模型。在Rails中这样做是一种非常标准的方法:

代码语言:javascript
复制
create_table :hot_things do |t|
  t.column :item, :polymorphic => true # item_id, item_type
  t.column :score
  t.timestamps
end

class HotThing < ActiveRecord::Base
  belongs_to :item, :polymorphic => true
end

像那样吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7537562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档