リア充爆発日記

You don't even know what ria-ju really is.

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

DECORATOR EP (初回盤)

DECORATOR EP (初回盤)