前半参加セッション『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をしたい、というのが与件。