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