Draperでdecorateした元のオブジェクトを参照する

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

decorateしたもののメソッド(例えばUser#name)を呼ぼうとしたら、NoMethodErrorと出てきてしまった。

最初の方法

<% (@user.methods - Object.new.methods).each do |method| %>
  <%= method %><br>
<% end %>

で見ると、
user, object, model, source
なるものを発見。どうやらdecorateする元らしい。なので、

user.object.name

とすれば動くようになった。

あとで調べると…

http://qiita.com/tachiba/items/6f0d56598de639adae1d#3-5
https://github.com/drapergem/draper#delegating-methods

を見るに、

class UserDecorator < Draper::Decorator
  delegate_all
end

とすればいいらしい。