我有以下型号
class Chicken < ActiveRecord::Base
after_initialize :grow_up
def grow_up
if gender == "female"
self.class.send(:include, Hen)
elsif gender == "male"
self.class.send(:include, Rooster)
end
end
end
module Hen
def communicate
"cluck cluck!"
end
end
module Rooster
def communicate
"cock-a-doodle-doo!"
end
end
然而,在运行 rspec 测试时,在第一个 Chicken 初始化为性别后,通信方法被缓存并且所有 Chicken 都独立于他们的性别说出相同的内容,即使在 config/environments/test.rb 中将 cache_classes 设置为 false
如何在测试执行期间重新加载 Chicken 类或修改此代码以消除此问题?