繁体   English   中英

猴子用Mongoid修补Rails中的db模型类会导致奇怪的行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM