SQL期とActiveRecordへのプラグイン

つい数ヵ月前まで、私はSQLが大嫌いでした。思い起こすこと数年前、初級シスアドだったか基本情報だったかでいやいや覚えたけれども基本的にはスルーし続け、どうしてもと言うときはwhereの書き方すらgoogle先生に頼って、その場限りででっちあげていましたw。まぁそれはそれで済んでたんですが。

そんな私にもついにSQL期がやってきそうな予感です。
railsで遊ぶようになって、やはりDBを使う(仕事で書くコードの7割はそうなわけで)のであればSQLは避けて通れないものなのだということを実感し、gorouさんのid:secondlife:20051001:1128095264で知ったすらすらと手が動くようになるSQL書き方ドリルを毎日ちょっとずつ勉強してます。ようやくJOINが出てきた。
で、ちゃんと手を動かしてみると楽しいですね、SQL。なぜかRubyをいじってるときと同じような、脳味噌がぐりぐりされるような心地よさを感じています。

また、ORMはSQLを隠蔽するための道具ではない、ということもすごく実感してます。最近になって、ようやくCalculations PluginWhere PluginといったPruginの素晴らしさを実感してます。

Calculations Pluginなんかではこんな感じに書けるらしいです。

railsコード

 Order.calculate(:sum, :cost).group_by(:country).having { |sum| sum > 50 }
   # => (retrun result as ordered hash)

内部のSQL

 SELECT country, SUM(cost) FROM orders GROUP BY country HAVING SUM(cost) > 50

いいねこりゃ。でもまだ自分でちゃんと使ってないので、あとで試してみます。

ということで最近はSQL期に入りそうな感じです。まぁこんな初学者がSQLのよさを語るなど、身の程知らずなんですけど。デブサミでもなんとか羽生さんのセッションに入り込めたので、隙あらばSQLドリルをサイン本にしてきたいと思います。