こんにちは、hachi8833です。
今回、「Crafting Rails 4 Applications」という一人で読むとくじけそうなRuby on Rails上級者向け技術本を読み通してみようじゃないのという社内企画に参加いたしました。噂に違わず、初心者などまるで相手にしていない濃厚な内容で、一つの章に大小様々な秘法がめいいっぱい詰め込まれています。正直自分のレベルではちょっと無謀でしたが、上級者の世界をいろいろ垣間見ることができました。あれはもしかすると走馬灯だっのかもしれません。
自分が担当した第2章「Building Models with Active Model」のスライドを掲載します。
第2章のメモ
RailsのActive Recordといえば、属性(=データベースのテーブル)を定義すると自動的にその属性を名前に取り込んだメソッドが使えるようになる機能で有名です。2章ではActiveModel::AttributeMethodsを使用して同じことをやってみています。具体的にはattribute_method_prefix()やattribute_method_suffix()などを使用します。
この機能の背後で活躍しているのが、黒魔法とすら呼ばれるmethod_missing()メソッドです。このメソッドを知ったのは『メタプログラミングRuby』という本ですが、どうもこのメソッドについて「家庭から出る排水口にかぶせて大事なものを寸前でキャッチするためのストッキング」みたいなものをついつい連想してしまいました。
自作のモデルをActive Record APIに準拠させるにはinclude ActiveModel::Modelするだけでできてしまうのですが、それをあえて複数のステップに分解し、ActiveModel::Lint::Testsで確認しながら、そこで行われている動作をみっちり解説してくれています。
何かの参考になれば幸いです。