在Spree框架中,Product
模型定義了一個名爲build_variants_from_option_values_hash
的私有方法。改變方法的可見性而無需重新定義方法
此方法通常是由after_create
回調內部調用,並且它被聲明爲類內private
。我想在正常的「創建」生命週期之外使用這種方法,並直接調用它,但由於它是私人聲明的,所以不幸的是它在課程之外是不可見的。
問題:有沒有辦法改變/修改方法的可見性而不重新定義它?
使用class_eval
,我可以重新定義private
區域之外的產品裝飾器中的方法,這確實有用。但是,我覺得完全複製整個方法只是爲了改變它的可見性是一種不必要的「猴子修補」類型的方法。有沒有更好的方法來完成這一點?
爲什麼不用'send:private_method,* args'向它發送參數? – 2014-12-01 16:54:07
@МалъСкрылевъ哦,我明白了。由於某種原因,我沒有考慮過這個問題。謝謝,這似乎工作。 – 2014-12-01 16:58:52