現在、生後何ヶ月かによって、幼児の体重を取得するといったコードを書いているのですが、数ヶ月とおきといった際に、以下のように、where文を複数記述しています。実際は、each で回して処理を行なっているのですが、発行される SQL は同一です。
index を貼ったのですが、このように冗長なコードよりもっと綺麗な書き方があると思ったのですが、なかなかうまく書けず。綺麗にかけるよというアドバイスありましたら、是非教えていただきたいです。

またindex以外にパフォーマンスを保てる方法がありましたら、是非教えていただきたいです。よろしくお願いいたします。

rubyコード

body_measurement_1  = body_measurements.where(measuring_date_on: "#{@student.birthday >> 0}".."#{@student.birthday >> 1}")&.last
body_measurement_2  = body_measurements.where(measuring_date_on: "#{@student.birthday >> 1}".."#{@student.birthday >> 2}")&.last
body_measurement_3  = body_measurements.where(measuring_date_on: "#{@student.birthday >> 2}".."#{@student.birthday >> 3}")&.last
body_measurement_4  = body_measurements.where(measuring_date_on: "#{@student.birthday >> 3}".."#{@student.birthday >> 4}")&.last
body_measurement_5  = body_measurements.where(measuring_date_on: "#{@student.birthday >> 4}".."#{@student.birthday >> 5}")&.last
body_measurement_6  = body_measurements.where(measuring_date_on: "#{@student.birthday >> 5}".."#{@student.birthday >> 6}")&.last

SQL

BodyMeasurement Load (1.1ms)  SELECT  `body_measurements`.* FROM `body_measurements` WHERE `body_measurements`.`student_id` = 5 AND (`body_measurements`.`measuring_date_on` BETWEEN '2012-12-19' AND '2013-01-19') ORDER BY `body_measurements`.`id` DESC LIMIT 1
BodyMeasurement Load (0.9ms)  SELECT  `body_measurements`.* FROM `body_measurements` WHERE `body_measurements`.`student_id` = 5 AND (`body_measurements`.`measuring_date_on` BETWEEN '2013-01-19' AND '2013-02-19') ORDER BY `body_measurements`.`id` DESC LIMIT 1
BodyMeasurement Load (1.1ms)  SELECT  `body_measurements`.* FROM `body_measurements` WHERE `body_measurements`.`student_id` = 5 AND (`body_measurements`.`measuring_date_on` BETWEEN '2013-02-19' AND '2013-03-19') ORDER BY `body_measurements`.`id` DESC LIMIT 1
BodyMeasurement Load (1.2ms)  SELECT  `body_measurements`.* FROM `body_measurements` WHERE `body_measurements`.`student_id` = 5 AND (`body_measurements`.`measuring_date_on` BETWEEN '2013-03-19' AND '2013-04-19') ORDER BY `body_measurements`.`id` DESC LIMIT 1
BodyMeasurement Load (1.3ms)  SELECT  `body_measurements`.* FROM `body_measurements` WHERE `body_measurements`.`student_id` = 5 AND (`body_measurements`.`measuring_date_on` BETWEEN '2013-04-19' AND '2013-05-19') ORDER BY `body_measurements`.`id` DESC LIMIT 1
BodyMeasurement Load (1.0ms)  SELECT  `body_measurements`.* FROM `body_measurements` WHERE `body_measurements`.`student_id` = 5 AND (`body_measurements`.`measuring_date_on` BETWEEN '2013-05-19' AND '2013-06-19') ORDER BY `body_measurements`.`id` DESC LIMIT 1