【发布时间】:2015-08-19 14:47:42
【问题描述】:
我想在模型类的单个实例上覆盖update_attributes 方法的行为。假设变量被称为@alert 最好的方法是什么?明确地说,我不想为整个类修改此方法的行为。
免责声明:
我需要这样做来强制该方法在我想要的时候返回false,这样我就可以为下面的错误处理代码编写单元测试。我知道这可能不是最佳做法。
【问题讨论】:
-
我正要更正您对“猴子补丁”一词的使用——认为它仅适用于对 Ruby 内置方法的修改——但在谷歌上搜索后似乎对其没有达成共识意义。例如,请参阅this SO question。
-
@CarySwoveland 从历史上看,“钱补丁”是指用你自己的实现来踩踏现有方法,这些方法完全接管。在这种情况下,它更像是一个“模拟”操作,它只改变一个对象,而其他对象,无论是现有的还是未来创建的,都不受影响。
-
这闻起来很像方法存根,任何体面的测试框架都可以容纳。
标签: ruby-on-rails ruby monkeypatching