在缺少的方法上装饰对象:是还是否?

时间:2019-06-21 09:38:41

标签: ruby-on-rails ruby decorator

我没有真正使用装饰器模式的原因之一是每次我需要访问装饰器方法时都必须调用.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

如果这不是一个好习惯,那么您能不能解释为什么?

0 个答案:

没有答案