我正在尝试重现当我从ActiveRecord获取记录时发生的错误但是类(activeRecord类,而不是实例)不在内存中,然后重新加载activeRecord类模型。我没有抓到这个bug,因为看起来类对象在内存中保留了很长时间。
以下是测试:
def test_decryption_should_work_at_any_time
require 'pry'
binding.pry
account = Account.last
require 'pry'
binding.pry
end
看一下,无论我尝试什么,你都会看到帐号是同一个对象:
102: f = Account.create!(:key => "secret", :password => "password")
=>103: binding.pry
104: account = Account.last
105: binding.pry
106: end
107: end
[1] pry(#<ActiveRecordTest>)> f.class.object_id
=> 70278442281960
然后重新加载对象
104: account = Account.last
=>105: binding.pry
106: end
107: end
[1] pry(#<ActiveRecordTest>)> account.class.object_id
=> 70278442281960
不幸的是,类对象获取的帐户类对象与创建时相同。有没有办法强制重新加载这个类?
我知道bug在哪里,我只是想重现它。那么有没有办法卸载那个类?
答案 0 :(得分:2)
不会在生产Rails代码中重新加载类。这是Rails开发模式的一个特性,即使这样,只有在需要时才重新加载类,而不是每次检查。
您的Account
模型是否使用STI(单表继承)?我遇到过像你提到的问题(在运行时加载的类就像那样。