首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最有效的方式是嵌套顺序,组,计数和?

最有效的方式是嵌套顺序,组,计数和?
EN

Stack Overflow用户
提问于 2011-11-01 12:19:52
回答 1查看 363关注 0票数 1

用户点赞:products Products has_many :likes

我想根据用户获得的总点赞数按降序返回记录。

例如,用户1有产品(A,B,C) A=4个赞,B=2个赞,C=1个赞,总数=7个赞

用户2拥有产品(D,E) D=4个赞,E=6个赞,总数= 10个赞

用户3有产品(F,G,H,I) F,G,H,I=每个1个赞,总数=4个赞

结果=>用户2、用户1、用户3

执行此操作的最有效方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-01 14:06:53

我们必须在这里使用计数器缓存来跟踪每个产品的点赞数量。为此,我们需要将integer类型的新列likes_count添加到products表中。

参考:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

用户模型:

代码语言:javascript
复制
class User < ActiveRecord::Base
 has_many :products
 scope :popular_products, joins(:products).group("user_id").
        order("sum(likes_count) DESC")
end

产品型号:

代码语言:javascript
复制
class Product < ActiveRecord::Base
  belongs_to :user
  has_many :likes
end

Like模型:

代码语言:javascript
复制
class Like < ActiveRecord::Base
  belongs_to :product , :counter_cache => true
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7962414

复制
相关文章

相似问题

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