[英]Monkey patching a db model class in Rails with Mongoid causes weird behaviour
我正在使用开发脚本文件来检查新的可能想法。 最近,我尝试从该脚本文件中猴子MyDBObject补丁。 假设一个空的dev.rb文件,并在顶部添加一个猴子补丁,如下所示:
class MyDBObject
def test_function
'function works'
end
end
启动撬控制台并加载文件会产生随机结果。 首先我收到:
NoMethodError: undefined method `relations' for MyDBObject:Class
后来加载了脚本,但是我再也无法访问原始类了:
undefined method `first' for MyDBObject:Class
我注意到在该行之前:
MyDBObject
在猴子修补之前,就可以实现预期的功能。 这似乎是类对象的某种延迟加载。 有人可以帮我这个忙吗?
根据源文件的加载顺序,您将重新定义整个类,或者替换您的更改。
我强烈建议您阅读以下内容: http ://www.justinweiss.com/articles/3-ways-to-monkey-patch-without-making-a-mess/(TLDR-将您的补丁放入模块中,并明确包含它)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.