0
我一直在尋找網絡,並發現了大量關於嘗試我的信息,但是我想添加到我的Ruby/Rails mixin中的一點糖正在創建一個函數那尋找一個模式。我想創建一個名爲Extend ActiveRecord method_missing
is_a_ *
其中*可以是任何基本功能。無論那個*是什麼,都需要被檢索,所以我可以在函數內部使用它並採取相應的行動。我必須使用method_missing嗎?
我一直在尋找網絡,並發現了大量關於嘗試我的信息,但是我想添加到我的Ruby/Rails mixin中的一點糖正在創建一個函數那尋找一個模式。我想創建一個名爲Extend ActiveRecord method_missing
is_a_ *
其中*可以是任何基本功能。無論那個*是什麼,都需要被檢索,所以我可以在函數內部使用它並採取相應的行動。我必須使用method_missing嗎?
這是什麼method_missing
是爲例如,這樣的事情應該工作:
module MyMixin
def respond_to?(method, priv=false)
(method.to_s =~ /^is_a_(\w+)$/) || super
end
def method_missing(sym, *args)
if sym.to_s =~ /^is_a_(\w+)$/
pattern = $1
# then just do something with pattern here, e.g.:
puts pattern
else
super
end
end
end
然後就包括MyMixin
在您的類,例如:
class A
include MyMixin
end
a = A.new
a.is_a_foo
#=> "foo"
附:你不嚴格需要重寫respond_to?
,我只是包括它的完整性:
a.respond_to?("is_a_foo")
#=> true
a.respond_to?("is_a_bar")
#=> true
a.respond_to?("is__a_foo")
#=> false
你能解釋一下,如果對象是*(任何)或不is_a_ *方法獲取? –