Одна из причин, по которой я на самом деле не пользуюсь шаблоном декоратора, заключается в необходимости вызывать .decorate каждый раз, когда мне нужен доступ к методам декоратора, что довольно часто.
Было бы хорошей практикой декорироватьпо отсутствующему методу, например:
class User < ApplicationRecord
def foo
"foo!"
end
def method_missing(m, *args, &block)
if UserDecorator.instance_methods.include? m
UserDecorator.new( self ).decorate.send(m, args)
end
end
end
class UserDecorator < WhateverDecorator
def bar
"bar!"
end
end
Если это не очень хорошая практика, не могли бы вы объяснить, почему?