Ruby on rails 有没有办法删除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
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方法呢。验证、包括等。。所有这些都是方法调用。我想和他们中的任何一个打交道。有办法吗?