Rails - 从关联中查询n个随机记录

时间:2015-01-28 19:39:04

标签: ruby-on-rails activerecord

我有两节课。 UserReview(用户有很多评论)。

我正在尝试找到最佳方法从User.reviews

的关联中提取两个随机评论

我可以使用user.reviews.order("RANDOM()").limit(n)但是如果我没有弄错的话,如果我有大量评论的用户,这对数据库会非常沉重......

我使用Postgres作为我的数据库。

思想?

1 个答案:

答案 0 :(得分:2)

独立于数据库的解决方案是:

user.reviews.where(id: user.reviews.pluck(:id).sample(2))

我总是喜欢独立于数据库的解决方案,否则根本不使用ActiveRecord。显然,与RANDOM()方法相比,此解决方案会执行两个数据库请求。性能方面,这是一个棘手的问题,因为数据库可以缓存这些请求。它无法缓存RANDOM()请求。