ActiveDecoratorでhas_manyな関連モデルに対応する
ActiveDecoratorは今のところ、has_manyとかbelongs_toなモデルをdecorateしてくれない。
PRが上がっているようだけど、これ2年前か。
https://github.com/amatsuda/active_decorator/pull/8
githubの常識とかよくわからないんだけど、こんな感じでスルーされちゃうのってふつうなの?
このgem使い続けていいのか不安になるけど、このgemを使うのをやめたとしても、そう大した影響はないので気にしないことに。
で、間に合わせでこんなかんじで対応した。
application_helper.rb
def decorate(obj) ActiveDecorator::Decorator.instance.decorate(obj) end
どこぞのview
<% @user.friends.each do |f| decorate(f) -%> <%= f.link_title -%> ~snip~
本当は一回やればいいdecorate(f)を何度もやる感じが若干アレだけど、まぁいいか、ということで。
追記)
decorateされるタイミングとしては、viewがrenderされるタイミングに加え、partialがrenderされたときもあり、そのときにlocalsに渡されたmodelもdecorateされるとのこと。作者の意図としては、そういうものはpartialに切り出せよ、ということらしいです。
参考:https://speakerdeck.com/skuroki/activedecoratordao-ru-falsehua
- アーティスト: livetune feat.初音ミク
- 出版社/メーカー: トイズファクトリー
- 発売日: 2014/03/05
- メディア: CD
- この商品を含むブログ (4件) を見る