如果使用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。这种方法不会抛出警告。