Украшение объекта по методу отсутствует: ууу или ууу? - PullRequest
1 голос
/ 21 июня 2019

Одна из причин, по которой я на самом деле не пользуюсь шаблоном декоратора, заключается в необходимости вызывать .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

Если это не очень хорошая практика, не могли бы вы объяснить, почему?

...