Ruby勉強会を開催しました(2015#7)

7月4日に今年7回目のRuby勉強会を開催しました。
梅雨に入り、梅雨らしい天気が続いています。

今回は弊社のRubyist 6名が参加しました。
6名中5名はRuby Association 認定プログラマです。(内3名はGold保持者!)
新人の参加は1名でしたが、今回はRuby認定試験合格に向けての学習をしてもらいました。

古参メンバの一部は勉強会メンバを中心に取り組んでいるシステム開発を行っています。

モデルの構成が複雑になってしまったこともあり、再度メンバと相談し、シンプルな構成に見直すことにしました。
共通化を図ったつもりでしたが、返ってエンハンスしづらい状況になってしまい、まだ傷の浅い段階で見直すこととしました。

方式など共通部分については、後々影響も大きくなりますので、妥協せず検討を重ねていきたいと思っています。
共通部分が固まれば、後はRuby, Railsの生産性の高さを活かして作り込むだけになりますので・・・。

前回(2015#6)の勉強会の記事で、ActiveRecordのmergeについて少し触れさせてもらいました。

個人的にはActiveRecordで用意されている範囲で対応したいと考えているのですが、先日新人Sに作ってもらったタイムカードのアプリケーションで、SQLのFrom句にサブクエリを使いたい場面が出てきてしまいました。
おそらくArelを使えば何とかなるのかと思うのですが、私自身も十分理解できていないですし、時間もなかったのでfind_by_sqlを使うよう指示して逃げてしまいました。

これまでの業務システム開発では、複雑なSQLの場合にはデータベース側にVIEWを作成することもありました。ActiveRecordでテーブルの結合が増えるとレスポンスが悪化していましたので。
今回はそれほど複雑なクエリではないこともあり、find_by_sqlを新人Sに試してもらうことにしました。

意外だったのが、戻り値がレシーバのモデルのオブジェクトになるので、カラムの属性にカラム名のメソッドでアクセスできることでした。
なかなか便利かもしれませんね。ちょっと負けた感があるので、これまで使ってこなかったのですが少し見直しました。
気をつけなければいけないのが、同じカラム名があった場合、後から出てきた方が優先されてしまうようでした。

食わず嫌いは改めて損をしてしまうかも・・・と思いましたので、find_by_sqlも含め、まだあまり活用していない機能についてもトライしていこうと思いました。