[英]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.