Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 有没有办法删除Rails中的方法调用?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 有没有办法删除Rails中的方法调用?

Ruby on rails 有没有办法删除Rails中的方法调用?,ruby-on-rails,ruby,Ruby On Rails,Ruby,在某些情况下,我希望捕获并删除Rails模型中的方法调用 我想要类似于remove\u方法的东西,但是它会删除方法调用 例如,如果在模型中有一个before\u save回调,我可能希望使用扩展到类中的模块捕获它,并删除或阻止before\u save触发 这可能吗 谢谢。您在保存之前是否尝试过清除,如下所示: before_save ->{} 编辑: 我之前发布的答案不起作用——不确定它是否起作用,但我隐约记得以前使用过。要跳过回调,例如在子类的上下文中,应该使用skip\u call

在某些情况下,我希望捕获并删除Rails模型中的方法调用

我想要类似于
remove\u方法的东西,但是它会删除方法调用

例如,如果在模型中有一个
before\u save
回调,我可能希望使用扩展到类中的模块捕获它,并删除或阻止
before\u save
触发

这可能吗


谢谢。

您在保存之前是否尝试过清除
,如下所示:

before_save ->{}
编辑:

我之前发布的答案不起作用——不确定它是否起作用,但我隐约记得以前使用过。要跳过回调,例如在子类的上下文中,应该使用
skip\u callback
。用法示例:

skip_callback :save, :before, :callback_method_name
或者,如果您想跳过特定条件下的回调:

skip_callback :save, :before, :callback_method_name, if: :some_condition_true?
还有一个
reset\u callbacks
方法将回调类型作为参数。例如,
reset\u回调:save
。回调可以通过类方法访问,
\u save\u callbacks
\u create\u callbacks
,等等。使用
reset\u callbacks
时我会小心,因为Rails本身似乎正在定义关联回调,即,
:在保存\u collection\u关联之前


如果您只讨论常规Ruby对象,那么可以重写子类中的方法。只需定义一个与超类同名的方法。您还可以通过包含一个模块来覆盖子类中的基类方法,该模块定义了与基类相同的实例方法

在什么情况下你可以使用这个?我很好奇这对Rails回调很好,但是任何Ruby方法呢。验证、包括等。。所有这些都是方法调用。我想和他们中的任何一个打交道。有办法吗?