繁体   English   中英

Rails模型作用域可获取字段排序的前3条记录

[英]Rails model scope to grab top 3 records ordered by a field

我有一个简单的模型关联:

Product has_many Review

我浏览了我认为某产品的评论,但是,我只想获取该产品的前3条评论,并按其score整数字段排序。

我想做类似的事情:

@product = Product.find(1).includes(:testimonials, :stores, :top_three_reasons)

然后只需遍历:

@product.reviews.each do |x|
  puts x.title
end 

我该怎么做? 当前,对于每种产品,我们都会提供每条评论,而且速度确实很慢。 我们只想包括前三条评论,以避免重复查询。

我建议为top_reviews创建一个专用范围。

class Product << AR::Base
  has_many :top_reviews, -> {order(score: :desc).limit(3)}
end

...

@product = Product.find(1)
@product.top_reviews.each do |x|
  puts x.title
end

这样呢

@product.reviews.order("score DESC").limit(3).each do |x|
  puts x.title
end 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM