第1回Rails勉強会@東京
行ってきました。今回も楽しかったです。
前後半にわかれてオープン分科会形式でやったんですが、前半は『Chap.14
ActiveRecord Basicsを読むよ』、後半は『switchtowerを使ってみるよ』に出てきまし
た。
switchtowerはid:drawnboyさんから誘われて立候補したものの、準備不足で結構メタメ
タになっちゃってました。申し訳ないです。。特にかくたにさんにはマシンを借りたりrakeを教えてもらったりと大変お世話になりました。ありがとうございます。
switchtowerセッションで感じたことは、関心は高いけれどもまとまった日本語が情報
がないのねぇ、ということ。個人ベースでは恩恵を受ける機会が少ない(ように見える)
のが原因なのかなぁ、と思いますが、いいツールだと思うので自分でも情報を出してい
きたいです。
今回チャレンジしてみた「n分でできる○○」ですが、switchtowerは20分でした。もう
少し速くできそうですね。めざせ10分。
前半参加セッション『ARの章を読むよ』
AWDwRの14章、"ActiveRecord Basics"を読もう、というセッションだったのですが、本を読むというよりもARよもやま話という感じになりました。
- DynamicFinderの仕組み
- method_missingを多用。activerecord-1.13.2/lib/active_record/base.rb # 970行目くらいからマジックが始まってる。
- ARClass.find_by_A_and_B(a_item,b_item)はできるが、ARClass.find_by_A_or_Bはできない。(1000行目付近construct_conditions_from_argumentsを参照。
def construct_conditions_from_arguments(attribute_names, arguments) (略) [ conditions.join(" AND "), *arguments[0...attribute_names.length] ] end
- IDの付け方
- validateのタイミング
- 入力項目が多いときに、複数画面を遷移しながら入力する作りにすることがある(アンケートとか)。画面遷移をするときにその画面内での入力項目へのvalidateをしたい、というのが与件。
- DBに入れるときと、画面遷移でのチェックとでは意味的にも異なる。AR使えないのもしかたがないし、自分で書くしかないのでは?。
- 後半セッションでid:kunitさんから指摘。遷移時に情報を保管するためのクラスを作って、それでActiveRecord::Validations::ClassMethodsをincludeすればできないかなぁ、と。
- あと、女性の方(お名前を伺う機会がなかったので、、すみません)にもifとProcでなんとかなりませんかね、という指摘を受けました。興味がありますので、もしよろしければ詳細をコメントとかに書いていただけるとうれしいです。
- 入力項目が多いときに、複数画面を遷移しながら入力する作りにすることがある(アンケートとか)。画面遷移をするときにその画面内での入力項目へのvalidateをしたい、というのが与件。