gpt4 book ai didi

ruby-on-rails-3 - ActiveRecord 关联上的装饰器模式和类型不匹配

转载 作者:行者123 更新时间:2023-12-05 02:24:21 26 4
gpt4 key购买 nike

我正在使用装饰器类为我的模型添加一些功能。我只希望这些信息用于处理一些值,而不是将任何内容保存到数据库中。

我有我的装饰类,比如:

class Deco

def initialize o
@target = o
end
def method_missing method, *args, &block
@target.send(method, *args, &block)
end
#my extra methods
end

我是这样使用它的:

deco_model = Deco.new(model)

这里的问题是,当我想将此 deco_mode 与另一个相关联时,我得到一个类型不匹配错误,这是有道理的,但是如果我将以下方法添加到我的装饰器类中:

def class
@target.class
end

我仍然得到同样的错误,但它说:模型(#aaaaaa)预期,得到模型(#aaaaa)是的,“模型”将是我的模型的类,并且对象 ID 在这两种情况下都相同......所以如果对象 ID 相同,为什么我仍然会收到异常?

谢谢

最佳答案

原来我还必须覆盖 is_a?内部使用的方法 ActiveRecord::Associaions::Association

完成后:

def is_a? klass
@target.class.object_id == klass.object_id
end

不再抛出异常。

关于ruby-on-rails-3 - ActiveRecord 关联上的装饰器模式和类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12956285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com