如果使用SimpleDelegator来扩展ActiveRecord::Base类,会抛出警告,建议使用DelegateClass方法来代替。下面是一个示例代码:
require 'delegate'
class MyModel < ActiveRecord::Base
  # ...
end
class MyModelDecorator < DelegateClass(MyModel)
  def initialize(model)
    super(model)
  end
  def some_decorated_method
    # ...
  end
end
decorated_model = MyModelDecorator.new(MyModel.first)
decorated_model.some_decorated_method
通过以上示例,我们创建了一个MyModel装饰器类,使用DelegateClass方法扩展了MyModel。这种方法不会抛出警告。