簡體   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