他のライブラリの redis ラッパーである gem を実装しようとしています。つまり、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
終わり
ノート :
他のライブラリからペイロードメソッドを上書きすることは考えていません
今、私が上で意味したことを得ることが可能ですか