active_decoratorは他の類似gemより気持ち良く書けて好きなんですが、時々
「decoratorのmethodが呼べないなあ?」
みたいな時があるのにもかかわらずなんとなく使ってて反省したのでコードを読んでみた。
要はview_assignsというその名の通りのrailsのmethodを使ってview_contextのinstance変数を列挙してActiveRecord系のものだったらdecorateすると。
なるほどなぁ〜。この辺が他の明示的にdecorateする系とは違うピリッと効いてるところなのかな。
それでやっとわかった。
= current_user.foo
とか
= @post.user.foo
とかいうようなassignしてない部分で「あれ、効かないな」となってたわけだ。
俺が使い方をわかってなかっただけなんですが、特に後者は結構でてくると思うけどみんなどうやってるんだろう?
追記:
と思ったらこのPRが正にそれっぽい。
Decorate associations of a decorated object by ronen · Pull Request #8 · amatsuda/active_decorator
association全部decorateするのはやり過ぎ感とかあるのかな?
ということらしいです。
なんと。
https://github.com/amatsuda/active_decorator/blob/master/lib/active_decorator/monkey/action_view/partial_renderer.rb#L5
partialに渡すlocalsがdecorateされることを利用してそう書けばいいのか・・・。
ていうか先日書いたsexy_liの命名が被ってる+俺の実装の糞さがわかって辛い。