我正在尝试实现一个gem,它是其他库的redis 包装器,即将ruby 对象存储在redis 中。
一切都很好,但我想要的是当我这样做的时候
[Class].all
它给这样的对象
[#<Peagon:0x007fba589de3a0 @name="a", @omg=false ,@payload="one",@handler="--- one\n...\n"> ,#<Peagon:0x007fba589de1a0 @name="b", @omg=true,@payload="two",@handler="--- two\n...\n">]
但相反,我希望它看起来像活动记录如何呈现对象
[#<Peagon name: "a",omg: false ,handler: "--- one\n...\n"> ,#<Peagon name="b", omg: true,handler: "--- two\n...\n">]
原因是我对向用户显示@payload
实例变量不感兴趣,因为这是由其他库设置的
所以基本上像这样发生 [我的宝石]
class Peagon
include SomeModule
attr_accessor :name,:omg,:handler
def initialize(options)
@name = options[:name]
@omg = options
self.payload_object = options[:payload_object]
end
end
现在[其他图书馆]里面有module
这个
module SomeModule
def payload=(object)
@payload ||= object
self.handler = @payload.to_yaml
end
def payload
@payload ||= YAML.load(self.handler)
end
结尾
笔记 :
从其他库覆盖有效负载方法不在我的脑海中
现在是否有可能得到我上面的意思