我正在使用以下 Rails 3 模型来动态创建模型:
# encoding: UTF-8
require_dependency 'read_only'
require_dependency 'readings_methods'
class Reading < ActiveRecord::Base
self.abstract_class = true
include ReadOnly
include ReadingsMethods
@@mutex = Mutex.new
@@children = {}
def self.with_table(t)
@@mutex.synchronize do
child = @@children[t]
if child.nil?
child = Class.new(self) do
self.table_name = t
end
@@children[t] = child
end
child
end
end
end
然而,调试显示,@@children
在每次页面加载时都会重置,从而使每个页面加载非常非常缓慢。我该如何防止这种情况?是什么原因造成的?除非我记住孩子,否则 Rails 会进入无限循环,这让我相信每当我创建一个新模型或类似的东西时,它至少会重新加载一些类。如何防止这种行为?