在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