我在图像和评论之间有一对多的关系。我想返回图像,但连同该特定图像的最新 5 条(按其主 ID 排序)评论一起返回。
这在 ActiveRecord 中可行吗?如何以 ruby 检测/将其转换为数组的方式构建 5 条评论?
PS 我想在 1 个查询中执行此操作。我知道我可以查询图像,然后为每张图像获取 5 条评论,但这样做效率低下。我想一口气做到这一点。
我没有提供数据库模式,因为它只是一个简单的一对多关系。评论表有一个名为 image_id 的列。
谢谢
我在图像和评论之间有一对多的关系。我想返回图像,但连同该特定图像的最新 5 条(按其主 ID 排序)评论一起返回。
这在 ActiveRecord 中可行吗?如何以 ruby 检测/将其转换为数组的方式构建 5 条评论?
PS 我想在 1 个查询中执行此操作。我知道我可以查询图像,然后为每张图像获取 5 条评论,但这样做效率低下。我想一口气做到这一点。
我没有提供数据库模式,因为它只是一个简单的一对多关系。评论表有一个名为 image_id 的列。
谢谢
不,没有办法用 ActiveRecord 做你所描述的事情。实际上,在 SQL 中也没有很好的方法来做到这一点,除非构造一个包含大量自连接的怪异查询。由于 ActiveRecord 通过生成 SQL 查询来检索数据,因此它具有与 SQL 相同的限制。
最简单的做法是检索每张图片的所有评论,然后从每张图片中挑选 5 条。如果每张图片的评论数量可能很大,并且检索所有评论会使您错过性能目标,那么有多种可能的解决方案。如果您发布更多详细信息,也许有人可以建议合适的解决方案。(例如:您使用的是什么数据库?有多少张图片?平均每张图片有多少评论?这必须有多快?)