Rails - 对特定记录下的所有记录进行排序和获取

Rails - Sort and fetch all records below a particular record

提问人:Suganya Selvarajan 提问时间:7/23/2023 更新时间:7/23/2023 访问量:43

问:

我有一个名为 SampleGroup 的表,它将有一个列 year。年份可以具有如下值 year_1、year_2 等

SampleGroup 表还具有根据年份列对记录进行排序的位置。该表将始终如下所示。

| year     | position        |
| -------- | --------------  |
| year_1   |0                |
| year_2   |1                |
| year_3   |2                |
| year_4   |3                |

我想获取给定年份以下的所有记录,例如:

如果给定year_3,则查询应获取year_3以下的所有记录,并应返回year_3。实现这一目标的最佳方法是什么?

SQL Ruby-on-Rails Ruby

评论

1赞 Stefan 7/23/2023
“如果给出year_3,则查询应获取year_3以下的所有记录,并应返回year_3”——示例表中“下面”year_3的(唯一)记录year_4。然而,你希望它(只?)返回year_3。你能澄清一下吗?
2赞 spickermann 7/23/2023
也许我误解了您的要求,但一个简单的返回不是预期的结果吗?SampleGroup.where('year > ?', 'year_3')
0赞 Suganya Selvarajan 7/24/2023
@spickermann是的,这就像一个魅力。谢谢
0赞 Tom Lord 7/24/2023
不过,我认为这个专栏是有实际目的的——因为也许人们不能假设年份可以按词典顺序排序。例如,可能有一个 .positionyear_10

答:

1赞 Tom Lord 7/23/2023 #1

我将通过两个查询来实现这一点。首先获取匹配的记录,然后获取位于其下方的所有记录:

year = 'year_3'
sample_group = SampleGroup.find_by(year: year)
SampleGroup.where('position <= ?', sample_group.position)