Rails - 特定のレコードの下にあるすべてのレコードを並べ替えて取得します
概要
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 が返される必要があります。これを達成するための最良の方法は何でしょうか?
解決策
これは 2 つのクエリで実現します。まず一致するレコードをフェッチし、次にその下にあるすべてのレコードをフェッチします。
year = 'year_3'
sample_group = SampleGroup.find_by(year: year)
SampleGroup.where('position <= ?', sample_group.position)