私はいくつかのメソッドチェーンを実行しようとしています。私は次のコードを持っています:
class MyClass
attr_accessor :handler
def do_a
puts 'i just did a'
self.handler = 'a'
self
end
def do_b_if_a
puts 'i just did b' if handler == 'a'
end
end
したがって、次のように機能します。
irb > test = MyClass.new
=> #<MyClass:0x007fa44ced9a70 @handler=nil>
irb > test.do_a
'i just did a'
irb > test.do_a.do_b_if_a
'i just did a'
'i just did b'
私が働きたくないのは、ハンドラーを最初に設定するときにdo_aを呼び出すときです。つまり、do_b_if_aはいつでも呼び出すことができます。しかし、do_aとチェーンされている場合にのみ呼び出されるようにしたいのですが、どうすればよいですか?