ActiveRecord でグルーピング
僕は以前に十二指腸ガンで十二指腸を全摘しているので、その際に膵臓の一部も切除している。その関係かインスリンの出がいまいち悪く、血糖値が下がらん、、、いわゆる糖尿病だったりする。そんなわけで毎日値を調べながらインスリンを注射しているのだけれど、ずいぶん前にすごい適当にrailsアプリを書いて、それで血糖値を管理している。で、そのときに手抜きで作ったグラフ表示のアクションがあって、「指定期間の血糖値を時系列に全グラフ化する」となっていたんだけれど、これを「日ごとに」変更しようとして、ふと「同じ日でグルーピング」するのってどうするんだろう? と悩んで、
def daybydaygraph g = Gruff::Line.new g.title = "blood sugar(day)" g.y_axis_label = "glucose level(mg/dL)" ## split by date back = nil points = [] Glucose.all.sort {|x,y| x.time <=> y.time}.map {|obj| time = obj.time.strftime("%m%d") if back and time != back then g.data(back, points) points = [] end points << obj.point back = time } g.data(back, points) filename = "blood_day.png" g.write(filename) send_file filename, :type => "image/png", :disposition => "inline" end
とかやってしまった。なんか ActiveRecord#splitみたいなのないのかな、とリファレンスを検索しようとして放置プレイ中。まったく勉強不足だ。
というか最近の値を出してみたら・・・かなりヤバい。高杉。遊びに行ったりとか多かったものな。ちょっとごはんの量を減らさなくてわ*1
というか横軸もちゃんと時間を反映した物に変えたい(散布図?)。うーん、僕みたいな馬鹿者は時間がいくらあってもたらん。
*1:ちなみに、08/15は海で泳ぎまくりの日。。。。ということはごはんより運動不足か!